fastapi-spawn 0.4.29__tar.gz → 0.4.31__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.29 → fastapi_spawn-0.4.31}/PKG-INFO +1 -1
  2. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/cli.py +4 -2
  3. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/config.py +2 -1
  4. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/generator.py +6 -3
  5. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/pyproject.toml +1 -1
  6. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/.gitignore +0 -0
  7. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/LICENSE +0 -0
  8. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/README.md +0 -0
  9. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/__init__.py +0 -0
  10. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/constants.py +0 -0
  11. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/interactive.py +0 -0
  12. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/alembic/alembic.ini.j2 +0 -0
  13. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/alembic/env.py.j2 +0 -0
  14. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/__init__.py.j2 +0 -0
  15. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/admin/setup.py.j2 +0 -0
  16. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/deps.py.j2 +0 -0
  17. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/graphql.py.j2 +0 -0
  18. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2 +0 -0
  19. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/auth/sso.py.j2 +0 -0
  20. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/health/router.py.j2 +0 -0
  21. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/pagination/router.py.j2 +0 -0
  22. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/payments/router.py.j2 +0 -0
  23. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/permissions/router.py.j2 +0 -0
  24. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/router.py.j2 +0 -0
  25. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/streaming/router.py.j2 +0 -0
  26. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/uploads/router.py.j2 +0 -0
  27. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2 +0 -0
  28. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/ai.py.j2 +0 -0
  29. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/cache.py.j2 +0 -0
  30. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/config.py.j2 +0 -0
  31. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/email.py.j2 +0 -0
  32. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/exceptions.py.j2 +0 -0
  33. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/logger.py.j2 +0 -0
  34. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/logging.py.j2 +0 -0
  35. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/monitoring.py.j2 +0 -0
  36. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/notifications.py.j2 +0 -0
  37. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/ocr.py.j2 +0 -0
  38. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/permissions.py.j2 +0 -0
  39. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/search.py.j2 +0 -0
  40. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/security.py.j2 +0 -0
  41. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/storage.py.j2 +0 -0
  42. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/vector_db.py.j2 +0 -0
  43. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/core/ws_manager.py.j2 +0 -0
  44. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/db/session.py.j2 +0 -0
  45. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/frontend/index.html.j2 +0 -0
  46. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/main.py.j2 +0 -0
  47. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/middleware/__init__.py.j2 +0 -0
  48. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/middleware/rate_limit.py.j2 +0 -0
  49. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/middleware/request_logger.py.j2 +0 -0
  50. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/app/middleware/response_format.py.j2 +0 -0
  51. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/base/Makefile.j2 +0 -0
  52. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/base/README.md.j2 +0 -0
  53. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/base/env.j2 +0 -0
  54. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/base/env_example.j2 +0 -0
  55. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/base/gitignore.j2 +0 -0
  56. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/base/pre_commit.j2 +0 -0
  57. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/base/pyproject.toml.j2 +0 -0
  58. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/ci/github/publish.yml.j2 +0 -0
  59. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/ci/github/tests.yml.j2 +0 -0
  60. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2 +0 -0
  61. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/db/seed.py.j2 +0 -0
  62. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/docker/Dockerfile.j2 +0 -0
  63. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/docker/docker-compose.yml.j2 +0 -0
  64. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/docker/dockerignore.j2 +0 -0
  65. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/infra/docker/docker-compose.prod.yml.j2 +0 -0
  66. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2 +0 -0
  67. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/infra/helm/values.yaml.j2 +0 -0
  68. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/infra/terraform/main.tf.j2 +0 -0
  69. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/infra/terraform/variables.tf.j2 +0 -0
  70. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/root/main.py.j2 +0 -0
  71. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/tasks/arq_worker.py.j2 +0 -0
  72. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/tasks/celery_app.py.j2 +0 -0
  73. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/tasks/sample_tasks.py.j2 +0 -0
  74. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/tests/conftest.py.j2 +0 -0
  75. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/templates/tests/test_health.py.j2 +0 -0
  76. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/fastapi_spawn/utils.py +0 -0
  77. {fastapi_spawn-0.4.29 → fastapi_spawn-0.4.31}/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.29
3
+ Version: 0.4.31
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
@@ -272,11 +272,12 @@ def start(
272
272
  from fastapi_spawn.interactive import SPAWN_STYLE
273
273
 
274
274
  use_current = questionary.confirm(
275
- "Do you want to generate files directly in the current directory?", default=False, style=SPAWN_STYLE
275
+ "Do you want to generate files directly in the current directory? (If no, a subfolder will be created)", default=False, style=SPAWN_STYLE
276
276
  ).unsafe_ask()
277
277
 
278
278
  if use_current:
279
279
  output_dir = Path(".")
280
+ config.create_project_folder = False
280
281
  import os
281
282
  if os.listdir("."):
282
283
  confirm = questionary.confirm(
@@ -391,11 +392,12 @@ def start(
391
392
  from fastapi_spawn.interactive import SPAWN_STYLE
392
393
 
393
394
  use_current = questionary.confirm(
394
- "Do you want to generate files directly in the current directory?", default=False, style=SPAWN_STYLE
395
+ "Do you want to generate files directly in the current directory? (If no, a subfolder will be created)", default=False, style=SPAWN_STYLE
395
396
  ).unsafe_ask()
396
397
 
397
398
  if use_current:
398
399
  output_dir = Path(".")
400
+ config.create_project_folder = False
399
401
  # Check if directory is not empty
400
402
  import os
401
403
  if os.listdir("."):
@@ -47,6 +47,7 @@ class ProjectConfig:
47
47
  include_makefile: bool = True
48
48
  dry_run: bool = False
49
49
  force: bool = False
50
+ create_project_folder: bool = True
50
51
  extras: list[str] = field(default_factory=list)
51
52
  # Derived (post-init)
52
53
  package_name: str = field(default="", init=False)
@@ -80,7 +81,7 @@ class ProjectConfig:
80
81
 
81
82
  @property
82
83
  def has_docker(self) -> bool:
83
- return self.include_docker and self.stack != Stack.minimal
84
+ return self.include_docker
84
85
 
85
86
  @property
86
87
  def has_infra(self) -> bool:
@@ -64,9 +64,12 @@ class ProjectGenerator:
64
64
  def generate(self) -> Path:
65
65
  if self.config.dry_run:
66
66
  self._dry_run_display()
67
- return self.output_dir / self.config.project_name
67
+ return self.output_dir if not self.config.create_project_folder else self.output_dir / self.config.project_name
68
68
 
69
- project_path = self.output_dir / self.config.project_name
69
+ if self.config.create_project_folder:
70
+ project_path = self.output_dir / self.config.project_name
71
+ else:
72
+ project_path = self.output_dir
70
73
 
71
74
  if project_path.exists() and self.config.force:
72
75
  shutil.rmtree(project_path)
@@ -115,7 +118,7 @@ class ProjectGenerator:
115
118
  if self.config.include_makefile:
116
119
  self._render_to(staging / "Makefile", "base/Makefile.j2")
117
120
 
118
- shutil.copytree(str(staging), str(project_path))
121
+ shutil.copytree(str(staging), str(project_path), dirs_exist_ok=True)
119
122
 
120
123
  return project_path
121
124
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fastapi-spawn"
7
- version = "0.4.29"
7
+ version = "0.4.31"
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