FastAPI-fastkit 1.2.1__py3-none-any.whl → 1.3.0__py3-none-any.whl

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 (63) hide show
  1. fastapi_fastkit/__init__.py +1 -1
  2. fastapi_fastkit/backend/inspector.py +153 -32
  3. fastapi_fastkit/backend/interactive/__init__.py +2 -0
  4. fastapi_fastkit/backend/interactive/config_builder.py +21 -2
  5. fastapi_fastkit/backend/interactive/prompts.py +52 -1
  6. fastapi_fastkit/backend/interactive/selectors.py +10 -0
  7. fastapi_fastkit/backend/main.py +79 -6
  8. fastapi_fastkit/backend/package_managers/factory.py +1 -1
  9. fastapi_fastkit/backend/package_managers/pdm_manager.py +3 -3
  10. fastapi_fastkit/backend/package_managers/poetry_manager.py +3 -3
  11. fastapi_fastkit/backend/package_managers/uv_manager.py +3 -3
  12. fastapi_fastkit/backend/project_builder/__init__.py +3 -0
  13. fastapi_fastkit/backend/project_builder/config_generator.py +17 -10
  14. fastapi_fastkit/backend/project_builder/preset_layout.py +203 -0
  15. fastapi_fastkit/backend/transducer.py +0 -1
  16. fastapi_fastkit/cli.py +77 -32
  17. fastapi_fastkit/core/settings.py +16 -0
  18. fastapi_fastkit/fastapi_project_template/README.md +72 -23
  19. fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +4 -1
  20. fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +4 -1
  21. fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +4 -1
  22. fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +4 -1
  23. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +2 -0
  24. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +31 -0
  25. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +128 -0
  26. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +70 -0
  27. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +11 -0
  28. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/format.sh-tpl +5 -0
  29. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl +6 -0
  30. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl +8 -0
  31. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl +6 -0
  32. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/__init__.py-tpl +0 -0
  33. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/__init__.py-tpl +0 -0
  34. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/__init__.py-tpl +0 -0
  35. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl +11 -0
  36. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/router.py-tpl +12 -0
  37. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/__init__.py-tpl +0 -0
  38. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +49 -0
  39. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/__init__.py-tpl +0 -0
  40. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +48 -0
  41. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/__init__.py-tpl +0 -0
  42. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +9 -0
  43. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +17 -0
  44. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +48 -0
  45. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +59 -0
  46. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +23 -0
  47. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +52 -0
  48. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +25 -0
  49. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/__init__.py-tpl +0 -0
  50. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +24 -0
  51. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +11 -0
  52. fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +77 -0
  53. fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +2 -2
  54. fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +4 -1
  55. fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +4 -1
  56. fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +4 -1
  57. fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +4 -1
  58. fastapi_fastkit/utils/main.py +73 -6
  59. {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/METADATA +8 -5
  60. {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/RECORD +63 -32
  61. {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/WHEEL +0 -0
  62. {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/entry_points.txt +0 -0
  63. {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,24 @@
1
+ # --------------------------------------------------------------------------
2
+ # pytest fixtures for <project_name>.
3
+ # --------------------------------------------------------------------------
4
+ from collections.abc import Generator
5
+
6
+ import pytest
7
+ from fastapi.testclient import TestClient
8
+
9
+ from src.app.domains.items.repository import ItemRepository
10
+ from src.app.main import app
11
+
12
+
13
+ @pytest.fixture(autouse=True)
14
+ def reset_items_store() -> Generator[None, None, None]:
15
+ """Each test starts with an empty items store."""
16
+ ItemRepository().reset()
17
+ yield
18
+ ItemRepository().reset()
19
+
20
+
21
+ @pytest.fixture
22
+ def client() -> Generator[TestClient, None, None]:
23
+ with TestClient(app) as c:
24
+ yield c
@@ -0,0 +1,11 @@
1
+ # --------------------------------------------------------------------------
2
+ # Health endpoint smoke test.
3
+ # --------------------------------------------------------------------------
4
+ from src.app.core.config import settings
5
+
6
+
7
+ def test_health_endpoint_returns_ok(client):
8
+ response = client.get(f"{settings.API_V1_PREFIX}/health")
9
+
10
+ assert response.status_code == 200
11
+ assert response.json() == {"status": "ok"}
@@ -0,0 +1,77 @@
1
+ # --------------------------------------------------------------------------
2
+ # Items domain — end-to-end coverage of the CRUD endpoints.
3
+ # --------------------------------------------------------------------------
4
+ from src.app.core.config import settings
5
+
6
+ ITEMS_URL = f"{settings.API_V1_PREFIX}/items"
7
+
8
+
9
+ def test_list_items_starts_empty(client):
10
+ response = client.get(ITEMS_URL)
11
+
12
+ assert response.status_code == 200
13
+ assert response.json() == []
14
+
15
+
16
+ def test_create_then_read_item(client):
17
+ create_response = client.post(
18
+ ITEMS_URL,
19
+ json={"name": "Sticker", "price": 2.5, "in_stock": True},
20
+ )
21
+
22
+ assert create_response.status_code == 201
23
+ created = create_response.json()
24
+ assert created["id"] == 1
25
+ assert created["name"] == "Sticker"
26
+
27
+ read_response = client.get(f"{ITEMS_URL}/{created['id']}")
28
+
29
+ assert read_response.status_code == 200
30
+ assert read_response.json() == created
31
+
32
+
33
+ def test_get_unknown_item_returns_404(client):
34
+ response = client.get(f"{ITEMS_URL}/999")
35
+
36
+ assert response.status_code == 404
37
+
38
+
39
+ def test_replace_item(client):
40
+ created = client.post(
41
+ ITEMS_URL,
42
+ json={"name": "Mug", "price": 9.0, "in_stock": True},
43
+ ).json()
44
+
45
+ response = client.put(
46
+ f"{ITEMS_URL}/{created['id']}",
47
+ json={"name": "Mug v2", "price": 11.0, "in_stock": False},
48
+ )
49
+
50
+ assert response.status_code == 200
51
+ body = response.json()
52
+ assert body["id"] == created["id"]
53
+ assert body["name"] == "Mug v2"
54
+ assert body["price"] == 11.0
55
+ assert body["in_stock"] is False
56
+
57
+
58
+ def test_delete_item(client):
59
+ created = client.post(
60
+ ITEMS_URL,
61
+ json={"name": "Keychain", "price": 4.0, "in_stock": True},
62
+ ).json()
63
+
64
+ delete_response = client.delete(f"{ITEMS_URL}/{created['id']}")
65
+ assert delete_response.status_code == 204
66
+
67
+ follow_up = client.get(f"{ITEMS_URL}/{created['id']}")
68
+ assert follow_up.status_code == 404
69
+
70
+
71
+ def test_create_item_validates_payload(client):
72
+ response = client.post(
73
+ ITEMS_URL,
74
+ json={"name": "", "price": -1.0},
75
+ )
76
+
77
+ assert response.status_code == 422
@@ -1,6 +1,6 @@
1
- # <project_name>
1
+ # Minimal FastAPI Template
2
2
 
3
- > Minimal FastAPI template for rapid prototyping
3
+ > Generated project: **<project_name>** — minimal FastAPI scaffold for rapid prototyping
4
4
 
5
5
  A minimal FastAPI template that provides the basic structure for building FastAPI applications. Perfect for getting started quickly or as a foundation for more complex projects.
6
6
 
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "<project_name>"
3
3
  version = "0.1.0"
4
- description = "<description>"
4
+ description = "[FastAPI-fastkit templated] <description>"
5
5
  authors = [
6
6
  {name = "<author>", email = "<author_email>"},
7
7
  ]
@@ -34,6 +34,9 @@ dev = [
34
34
  "mypy>=1.15.0",
35
35
  ]
36
36
 
37
+ [tool.fastapi-fastkit]
38
+ managed = true
39
+
37
40
  [build-system]
38
41
  requires = ["hatchling"]
39
42
  build-backend = "hatchling.build"
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "<project_name>"
3
3
  version = "0.1.0"
4
- description = "<description>"
4
+ description = "[FastAPI-fastkit templated] <description>"
5
5
  authors = [
6
6
  {name = "<author>", email = "<author_email>"},
7
7
  ]
@@ -45,6 +45,9 @@ dev = [
45
45
  "PyYAML>=6.0.2",
46
46
  ]
47
47
 
48
+ [tool.fastapi-fastkit]
49
+ managed = true
50
+
48
51
  [build-system]
49
52
  requires = ["hatchling"]
50
53
  build-backend = "hatchling.build"
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "<project_name>"
3
3
  version = "0.1.0"
4
- description = "<description>"
4
+ description = "[FastAPI-fastkit templated] <description>"
5
5
  authors = [
6
6
  {name = "<author>", email = "<author_email>"},
7
7
  ]
@@ -42,6 +42,9 @@ dev = [
42
42
  "PyYAML>=6.0.2",
43
43
  ]
44
44
 
45
+ [tool.fastapi-fastkit]
46
+ managed = true
47
+
45
48
  [build-system]
46
49
  requires = ["hatchling"]
47
50
  build-backend = "hatchling.build"
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "<project_name>"
3
3
  version = "0.1.0"
4
- description = "<description>"
4
+ description = "[FastAPI-fastkit templated] <description>"
5
5
  authors = [
6
6
  {name = "<author>", email = "<author_email>"},
7
7
  ]
@@ -20,6 +20,9 @@ dev = [
20
20
  "httpx>=0.28.1",
21
21
  ]
22
22
 
23
+ [tool.fastapi-fastkit]
24
+ managed = true
25
+
23
26
  [build-system]
24
27
  requires = ["hatchling"]
25
28
  build-backend = "hatchling.build"
@@ -5,6 +5,7 @@
5
5
  # --------------------------------------------------------------------------
6
6
  import os
7
7
  import re
8
+ import tomllib
8
9
  import traceback
9
10
  from typing import Any, Dict, Optional
10
11
 
@@ -24,6 +25,14 @@ logger = get_logger(__name__)
24
25
  REGEX = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b"
25
26
 
26
27
 
28
+ # Canonical identity markers used to distinguish FastAPI-fastkit-managed
29
+ # projects from unrelated FastAPI projects in the user workspace. Kept as
30
+ # module-level constants so templates, metadata injection, and detection
31
+ # logic all reference the same strings.
32
+ FASTKIT_DESCRIPTION_MARKER = "[FastAPI-fastkit templated]"
33
+ FASTKIT_TOOL_SECTION = "fastapi-fastkit" # the [tool.<this>] table key
34
+
35
+
27
36
  def get_optimal_console_size() -> tuple[int, int]:
28
37
  """
29
38
  Get optimal console size based on terminal dimensions.
@@ -273,19 +282,77 @@ def validate_email(ctx: Context, param: Any, value: Any) -> Any:
273
282
 
274
283
  def is_fastkit_project(project_dir: str) -> bool:
275
284
  """
276
- Check if the project was created with fastkit.
277
- Inspects the contents of the setup.py file for FastAPI-fastkit markers.
285
+ Check if the project was created/managed by FastAPI-fastkit.
286
+
287
+ Detection precedence (any single match is sufficient):
288
+
289
+ 1. ``pyproject.toml`` with ``[tool.fastapi-fastkit].managed = true``
290
+ (machine-readable marker; set by ``fastkit`` during project generation).
291
+ 2. ``pyproject.toml`` ``[project].description`` contains the
292
+ ``[FastAPI-fastkit templated]`` marker (case-insensitive).
293
+ 3. ``setup.py`` contains ``fastapi-fastkit`` (case-insensitive) — preserves
294
+ the legacy detection path for projects generated before the pyproject
295
+ marker existed.
278
296
 
279
297
  :param project_dir: Path to the project directory
280
298
  :return: True if the project was created with fastkit, False otherwise
281
299
  """
300
+ if _pyproject_marks_fastkit(os.path.join(project_dir, "pyproject.toml")):
301
+ return True
302
+
282
303
  setup_py = os.path.join(project_dir, "setup.py")
283
- if not os.path.exists(setup_py):
304
+ if os.path.exists(setup_py):
305
+ try:
306
+ with open(setup_py, "r", encoding="utf-8") as f:
307
+ content = f.read()
308
+ if FASTKIT_TOOL_SECTION in content.lower():
309
+ return True
310
+ except (OSError, UnicodeDecodeError):
311
+ pass
312
+
313
+ return False
314
+
315
+
316
+ def _pyproject_marks_fastkit(pyproject_path: str) -> bool:
317
+ """Return True if ``pyproject.toml`` carries a FastAPI-fastkit marker.
318
+
319
+ Tries structured TOML parsing first (authoritative), falling back to a
320
+ plain-text scan if the file is malformed so detection still works on
321
+ hand-edited or partially written pyproject files.
322
+ """
323
+ if not os.path.exists(pyproject_path):
284
324
  return False
285
325
 
286
326
  try:
287
- with open(setup_py, "r", encoding="utf-8") as f:
288
- content = f.read()
289
- return "FastAPI-fastkit" in content
327
+ with open(pyproject_path, "rb") as f:
328
+ data = tomllib.load(f)
329
+ except (OSError, tomllib.TOMLDecodeError, UnicodeDecodeError):
330
+ return _pyproject_text_marks_fastkit(pyproject_path)
331
+
332
+ tool_section = data.get("tool", {}).get(FASTKIT_TOOL_SECTION, {})
333
+ if isinstance(tool_section, dict) and tool_section.get("managed") is True:
334
+ return True
335
+
336
+ description = data.get("project", {}).get("description", "")
337
+ if (
338
+ isinstance(description, str)
339
+ and FASTKIT_DESCRIPTION_MARKER.lower() in description.lower()
340
+ ):
341
+ return True
342
+
343
+ return False
344
+
345
+
346
+ def _pyproject_text_marks_fastkit(pyproject_path: str) -> bool:
347
+ """Fallback plain-text scan for malformed pyproject files."""
348
+ try:
349
+ with open(pyproject_path, "r", encoding="utf-8") as f:
350
+ content = f.read().lower()
290
351
  except (OSError, UnicodeDecodeError):
291
352
  return False
353
+
354
+ if f"[tool.{FASTKIT_TOOL_SECTION}]" in content:
355
+ return True
356
+ if FASTKIT_DESCRIPTION_MARKER.lower() in content:
357
+ return True
358
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FastAPI-fastkit
3
- Version: 1.2.1
3
+ Version: 1.3.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
@@ -90,6 +90,7 @@ fastkit init --interactive
90
90
  ```
91
91
  - What it does: Guided step-by-step project setup with intelligent feature selection
92
92
  - Features:
93
+ - **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
93
94
  - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
94
95
  - **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based
95
96
  - **Background tasks**: Celery, Dramatiq
@@ -100,10 +101,10 @@ fastkit init --interactive
100
101
  - **Deployment**: Docker, docker-compose with auto-generated configs
101
102
  - **Package manager**: pip, uv, pdm, poetry
102
103
  - **Custom packages**: Add your own dependencies
103
- - Auto-generates:
104
- - `main.py` with selected features integrated
105
- - Database and authentication configuration files
106
- - Docker deployment files (Dockerfile, docker-compose.yml)
104
+ - Auto-generates (varies by preset — see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
105
+ - `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
106
+ - Database and authentication configuration files at preset-specific paths
107
+ - Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
107
108
  - Test configuration (pytest with coverage)
108
109
 
109
110
  ### Create a project from a template
@@ -144,9 +145,11 @@ fastkit deleteproject <project_name>
144
145
 
145
146
  For comprehensive guides and detailed usage instructions, visit our documentation:
146
147
 
148
+ - 🧭 **[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
149
  - 📚 **[User Guide](https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/)** - Detailed installation and usage guides
148
150
  - 🎯 **[Tutorial](https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/)** - Step-by-step tutorials for beginners
149
151
  - 📖 **[CLI Reference](https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/)** - Complete command reference
152
+ - 🧱 **[Architecture Preset Matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/)** - Per-preset / per-feature contract for interactive generation
150
153
  - 🔍 **[Template Quality Assurance](https://bnbong.github.io/FastAPI-fastkit/reference/template-quality-assurance/)** - Automated testing and quality standards
151
154
 
152
155
  ## Contributing
@@ -1,39 +1,40 @@
1
- fastapi_fastkit-1.2.1.dist-info/METADATA,sha256=ss4JwBYGr5g56XsTNQM6KqnGQSSYcSj-cUweDQq7sjI,9118
2
- fastapi_fastkit-1.2.1.dist-info/WHEEL,sha256=Z36eTX6lG3PITRleSd5hAZHCcz52yg3c0JQVxKBbLW0,90
3
- fastapi_fastkit-1.2.1.dist-info/entry_points.txt,sha256=IONmgb7zWPnJWsCOcpF3u1yP6AWnPjrgWIv49mr1DZE,76
4
- fastapi_fastkit-1.2.1.dist-info/licenses/LICENSE,sha256=2a9cYM3Uy8DW-so6zpYaqUafYT1Dznd3OCWCFe5CKNA,1066
5
- fastapi_fastkit/__init__.py,sha256=n28YDgLpCC7wZf_uB1xeqKSCdyKmIwYrD_UCvLQnHPc,23
1
+ fastapi_fastkit-1.3.0.dist-info/METADATA,sha256=9nfBLS9YapDnZkVpu4tjjJY3XpwraA8b7-qkITkcSaQ,9892
2
+ fastapi_fastkit-1.3.0.dist-info/WHEEL,sha256=Z36eTX6lG3PITRleSd5hAZHCcz52yg3c0JQVxKBbLW0,90
3
+ fastapi_fastkit-1.3.0.dist-info/entry_points.txt,sha256=IONmgb7zWPnJWsCOcpF3u1yP6AWnPjrgWIv49mr1DZE,76
4
+ fastapi_fastkit-1.3.0.dist-info/licenses/LICENSE,sha256=2a9cYM3Uy8DW-so6zpYaqUafYT1Dznd3OCWCFe5CKNA,1066
5
+ fastapi_fastkit/__init__.py,sha256=Xylr-uChEzNB6X7IqF6X72pW3Zbaiu7JV2-wzp2otRM,23
6
6
  fastapi_fastkit/__main__.py,sha256=-FS9yUe4IEgDbJjFC1xso-pFCxRzUJ447j6bYpsBTBM,271
7
7
  fastapi_fastkit/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- fastapi_fastkit/backend/inspector.py,sha256=kiQbFko8kHW65LgRMpiuaru__Tsn_3FOx5CwtKSGt9c,51029
9
- fastapi_fastkit/backend/interactive/__init__.py,sha256=y13IaWjzkYy7FPsQ9yIYBzwv_EnUkZSIEJgWVJawnK0,1615
10
- fastapi_fastkit/backend/interactive/config_builder.py,sha256=KgLTVG9VBZVGA5b2IKCd5hs7lqfhCWqF5UGriWSqoYI,6289
11
- fastapi_fastkit/backend/interactive/prompts.py,sha256=bXwXk-PnKsss8AQecf5NxTFUOTU7YU1QrjJYfLHo8_w,15343
12
- fastapi_fastkit/backend/interactive/selectors.py,sha256=fa1nKhPok6iqi0lsC3fzrlHYomTcRtdHJFF19fe43R4,7377
8
+ fastapi_fastkit/backend/inspector.py,sha256=pRzup2ShE9iaHEGLgpj-W9fRweFjtBJtRrBritcB8o8,55869
9
+ fastapi_fastkit/backend/interactive/__init__.py,sha256=g4zUJ_K-Bi1-Zi4whZpSqzImYgjzsaMMZViqeoK692A,1681
10
+ fastapi_fastkit/backend/interactive/config_builder.py,sha256=v-stmd80Da7wBWuU5KR2HWyxFHmAFQ6jwTk2yeXgiYo,7187
11
+ fastapi_fastkit/backend/interactive/prompts.py,sha256=TewzWi9WdmGlVCUdVNtxZJfu8r3Kme1yic3ChnQ9j_g,17177
12
+ fastapi_fastkit/backend/interactive/selectors.py,sha256=1bdctI9M1FueKWEpRcopVS3z_i9s3natBi6diYkwheA,7824
13
13
  fastapi_fastkit/backend/interactive/validators.py,sha256=WaRWuE6H2qQ5UExmHq3NQ41spiCyhbyk7QlYVXcfoHw,4651
14
- fastapi_fastkit/backend/main.py,sha256=xEubuHrTzRGXZ2VwCMV7Wmyn0LSSthHLEt4F48rBDBs,30942
14
+ fastapi_fastkit/backend/main.py,sha256=OdfDGm2xKORG6HiSPXoLDC2kqKcLJkNIsMET-rtWCUk,33635
15
15
  fastapi_fastkit/backend/package_managers/__init__.py,sha256=awSaY-pInI9K4mk1aWqdyKk143AGrcPI4NCy5l_48vw,691
16
16
  fastapi_fastkit/backend/package_managers/base.py,sha256=6IZmIgEgySocVRKH36ffyEMDrnyDYGR3vye7tFjCSRA,4644
17
- fastapi_fastkit/backend/package_managers/factory.py,sha256=sfmsAO3WC1IbehQRrAuJx3pDUtfvz3OZEMzd0kkDiZM,5452
18
- fastapi_fastkit/backend/package_managers/pdm_manager.py,sha256=5UF2XtSJB5vjTeG4NoziZT8HgMbNfSdJeALGm6sIN6Y,9938
17
+ fastapi_fastkit/backend/package_managers/factory.py,sha256=1k8oTTM63YkgkKMyfVb42rEGysm96XDYLF4sqBgO4GU,5451
18
+ fastapi_fastkit/backend/package_managers/pdm_manager.py,sha256=oxWI6SBwDv5f57880tap84Rta3zSyU26pXsoEkHlock,9938
19
19
  fastapi_fastkit/backend/package_managers/pip_manager.py,sha256=hNzGIH3WxKUOS9FLcRBe9DANGz4iYaBKUSwZOR8KQm0,8061
20
- fastapi_fastkit/backend/package_managers/poetry_manager.py,sha256=S4RhLHIKVpDq5knaC18vhDkfNjd129uWqXCIeBVE3lw,16596
21
- fastapi_fastkit/backend/package_managers/uv_manager.py,sha256=F9oXnKgjd-fgLmB6-H9lWZVnMcf_psXyQNCQ3O45BCc,12410
22
- fastapi_fastkit/backend/project_builder/__init__.py,sha256=Y_0G3duIEyTtlJMAN7VgK4ufCNxCNKXnkT0u7QCldCI,574
23
- fastapi_fastkit/backend/project_builder/config_generator.py,sha256=3e7F8DcwvW25Rj2l6Cc9rPKEjpEOcznVYHQXPPFbIao,23100
20
+ fastapi_fastkit/backend/package_managers/poetry_manager.py,sha256=pp_itOtpQZi_FsjG8ADwmkdd6wCADiqw87CgzBV_32I,16596
21
+ fastapi_fastkit/backend/package_managers/uv_manager.py,sha256=WDkQ1lzNZdKd5BdEoeYUDUsPbh9Ts6-s8UkdUmhDOHo,12410
22
+ fastapi_fastkit/backend/project_builder/__init__.py,sha256=FSPWxF6LaKolU082kaqWGgoExEH0Gn7AkgajCUoAeZs,690
23
+ fastapi_fastkit/backend/project_builder/config_generator.py,sha256=eKU9Pw5pb94LS0Dr1Zr6EOc063t37j9M5AXjx4wHHPU,23636
24
24
  fastapi_fastkit/backend/project_builder/dependency_collector.py,sha256=stQ77W7LUfsiKyyl3ggynC90Pd0UYFnW1xTrb-y286w,6419
25
- fastapi_fastkit/backend/transducer.py,sha256=rIqwJCm5nsruw3qYZYSEoevqOXoKs38MLAmexAM3O7Y,7171
26
- fastapi_fastkit/cli.py,sha256=60FZTMT9ulTwMthJsM0-WMJHKvcZiCK9JMAor9XH5-k,31556
25
+ fastapi_fastkit/backend/project_builder/preset_layout.py,sha256=Lpig_B17VCuOm-6kvPFOgoVNmJZoukZ9qR9L2VH2Plc,8200
26
+ fastapi_fastkit/backend/transducer.py,sha256=nPNT3YtxlU5pJW6tC8nbieqY0kexZp2YO5NXXujuXcg,7120
27
+ fastapi_fastkit/cli.py,sha256=XPamDzS-WXW1vhtNNp1FtJXfapBA0MqY5ItIXEtlbXs,34307
27
28
  fastapi_fastkit/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
29
  fastapi_fastkit/core/exceptions.py,sha256=W29lbDlKE_yKdS-m_QHaWdDB1j3yGge6mVx5mo_jLrU,972
29
- fastapi_fastkit/core/settings.py,sha256=lSb4S9rf8zVSD1KFXGP6o0BjZUPnu4wzviNp2KVZkIY,8824
30
+ fastapi_fastkit/core/settings.py,sha256=22Jpvqe7TGgh0Qd0AqKzHMq1ga_Zs_kOZPQqqReJZ0I,9755
30
31
  fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md,sha256=5lT_ZY1QItTDbhKYNY6KlOoGlbSTBSrs9DJthcle3D4,1529
31
- fastapi_fastkit/fastapi_project_template/README.md,sha256=7urtQfEjWkX8tSnG_f28_z_kgB8Gjy-W4NxqN8M-df8,2637
32
+ fastapi_fastkit/fastapi_project_template/README.md,sha256=qsKHF27eVpkJ7aYOtiG7sk8jDE4jgZzkUT4K7NlDons,5450
32
33
  fastapi_fastkit/fastapi_project_template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
34
  fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl,sha256=ER5_3eyFYRQUupKW7z1tBOcTVavwEqjzqbbt1kl-Be0,22
34
35
  fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl,sha256=8QwgyX8vpYhDtg1bcrBjf99yiLQRRO1OkBsGMRfggKY,269
35
36
  fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl,sha256=K46U8k4lSD0pxIXyqZtHBq8LagqbF3vqCBNZxbp965s,2559
36
- fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl,sha256=8Buu1OqCqZNKhdi5V0wevoM0qZK5sfeUOHFbAOSA6PI,1565
37
+ fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl,sha256=ff5diistahw96siEh2xbAGOOIwOOjhyyWtwAgwITgHM,1632
37
38
  fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl,sha256=ucSCNmfjShZH35zI2keHL1ciEyQke-2S8YQfYRdfvMo,641
38
39
  fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl,sha256=wivOKoO8NCXimBSWwLYGh43UW0ufHTRX1LiFm3ZVSmc,44
39
40
  fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl,sha256=9V3e8ckaQ8bfNyRdhnmSfRy9UkUS3XoV9ziEOXChdog,53
@@ -61,7 +62,7 @@ fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-
61
62
  fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl,sha256=ER5_3eyFYRQUupKW7z1tBOcTVavwEqjzqbbt1kl-Be0,22
62
63
  fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl,sha256=II4jyvXxkvLovcVNfTBDgLTclePuoM3Zr1dXuSgN5OA,3489
63
64
  fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl,sha256=XKqadieXHHNAGToHs4YexJMdqNincNZ_JFrSpNYGzro,3908
64
- fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl,sha256=8Buu1OqCqZNKhdi5V0wevoM0qZK5sfeUOHFbAOSA6PI,1565
65
+ fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl,sha256=ff5diistahw96siEh2xbAGOOIwOOjhyyWtwAgwITgHM,1632
65
66
  fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl,sha256=Ly_kVIYKPRFBKL8Z_EvSRUFkaNQuXGWKqocO8nT8L1E,641
66
67
  fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/format.sh-tpl,sha256=wivOKoO8NCXimBSWwLYGh43UW0ufHTRX1LiFm3ZVSmc,44
67
68
  fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl,sha256=9V3e8ckaQ8bfNyRdhnmSfRy9UkUS3XoV9ziEOXChdog,53
@@ -95,7 +96,7 @@ fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_item
95
96
  fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl,sha256=ER5_3eyFYRQUupKW7z1tBOcTVavwEqjzqbbt1kl-Be0,22
96
97
  fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl,sha256=8QwgyX8vpYhDtg1bcrBjf99yiLQRRO1OkBsGMRfggKY,269
97
98
  fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl,sha256=5EEtaammaKEQMp-2cmEWRZd1qDxAeX-Jeo_uCml_W5c,2482
98
- fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl,sha256=rBuSNIk1rf4MLgyTPlmJMS4VTiGyhZ1Tsu1nRJE7JiI,1459
99
+ fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl,sha256=LgJ4M06zFQ60Dji_OCtM23evWDZbjdBJGTmphq5UV7M,1526
99
100
  fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl,sha256=1YJ0v74PZnMflHhI6NW7wjt4o3DQH3S17q8bUs1t5Ys,601
100
101
  fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/format.sh-tpl,sha256=wivOKoO8NCXimBSWwLYGh43UW0ufHTRX1LiFm3ZVSmc,44
101
102
  fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl,sha256=9V3e8ckaQ8bfNyRdhnmSfRy9UkUS3XoV9ziEOXChdog,53
@@ -124,7 +125,7 @@ fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl,sha256=ER5_
124
125
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl,sha256=8QwgyX8vpYhDtg1bcrBjf99yiLQRRO1OkBsGMRfggKY,269
125
126
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl,sha256=BVbW_QmcPk9KT37CUFTA7zEAiUTKs5qlZO8CfFRZLZ8,463
126
127
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl,sha256=4PJfJc12bKLsooyRObsfghaxl_OHXJOPclNiZ-6VQpY,2796
127
- fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl,sha256=d487EqTnpzLPTrrypy7RiQ7Vv6vpZ22Bb3DujAmfOm0,1541
128
+ fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl,sha256=e_7yceOT8k3L1ZbmSDbtB9e_v6_WjEhzK9OLR7x1Ibs,1608
128
129
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl,sha256=jaexLatz0slnn4l0DasK8SMFlFIcQLKY_CX1hxTRdK0,640
129
130
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/format.sh-tpl,sha256=wivOKoO8NCXimBSWwLYGh43UW0ufHTRX1LiFm3ZVSmc,44
130
131
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl,sha256=9V3e8ckaQ8bfNyRdhnmSfRy9UkUS3XoV9ziEOXChdog,53
@@ -149,10 +150,40 @@ fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py
149
150
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
151
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/conftest.py-tpl,sha256=Qk1nBl0C-g8RZIoXFjzjGlP6lRFWFBU0eLq41iQi15Y,875
151
152
  fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/test_items.py-tpl,sha256=yTo_ikmylVK4MCSEZ5gDFpuAl1M7kmHJrK5x_B7xnj4,1323
153
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl,sha256=1AkslHjrLufEGBpbyyKDfoEUQOUOaNNs0bEwmfaK29M,46
154
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl,sha256=ineHW8XTpDBgaewnNW7ODGbNQwfjCYGdvboVedrLU-4,275
155
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl,sha256=FBqIQwqOZa8rkEQYorvM-27zcY2gGZxkLCC_-WB9Ums,4551
156
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl,sha256=V7kuDwnXdnUVv6hxnBZVxpsqiWPNu_dChNIXtDNS42k,1338
157
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl,sha256=B-tHCUaFwmT5EwagKwENiLWdAMYnqCKECzY4kgLZE-k,197
158
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/format.sh-tpl,sha256=wivOKoO8NCXimBSWwLYGh43UW0ufHTRX1LiFm3ZVSmc,44
159
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl,sha256=GUCLz6mGOTqrnInfybPoHKShE3_kCpnyzDRZtqelqY4,74
160
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl,sha256=ju9iKsqTBJJVni3_4knSmUnD72SXCNlG7MblPAIMnjg,97
161
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl,sha256=RJtRl9bBI0gRnqq9P1t2y9qaJI1K0hVTbzqaRorHd8w,43
162
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl,sha256=k22K5KNeeIXgKvKRBALpHRsUeE5litdaXH4Z5XkG86c,379
166
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/router.py-tpl,sha256=0HlpvNF0Un_aPFdhgjglvnt-JIitQ-7FuHzDVOG4rc4,497
167
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl,sha256=gkwDvxB3V4KNLJ1xzDez1ivwwMg-qwhN8hnmiSb9Hfo,1612
169
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl,sha256=4H4OeN61kU-aOVLq8NpvIZGCa2xXBBGLX7Ab6ssrBDQ,1528
171
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl,sha256=Oc05YNDcfBRuoQRY1zbPfxL3vzEnt4fWwlAqPsgCDP8,220
173
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl,sha256=Ffnoe6CWURkRfLI3hpzpcp7gVQloNOLTAA0BMsjmYI0,522
174
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl,sha256=j68Wf96dw8i3ubJ7fL_8IJVPx_Jjal0EkABg6at7fp0,1816
175
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl,sha256=qdUw6gvtlIoikLIQs9ZzhXmMa1-HxeAcTgkIPik_3tI,2203
176
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl,sha256=fRKitiBpypPs_cI0eygL0VHAQD_2WjaCW0x2bJzfCjo,626
177
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl,sha256=OxIysLe6QmYXU7zSmorJmJkSNIMYxah5FHp0UvN_zAo,1879
178
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl,sha256=ikJ7LyoWzXmp4IEixxxbH2TYZqJ3ORkWEOKSCf0c60s,765
179
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl,sha256=3b34L0E_cVi6z-_OW5Zqedo_EePwa7syjNF7K0DZQtk,703
181
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl,sha256=YXVLzRCXRmD6gHMNMmfyYJdwHHrasppWi-Ga0jCh6rs,421
182
+ fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl,sha256=RLuMinBf_EqlkTfaUquBfUfRrX_IF2yBPKehITLzYmk,2132
152
183
  fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl,sha256=ER5_3eyFYRQUupKW7z1tBOcTVavwEqjzqbbt1kl-Be0,22
153
184
  fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl,sha256=8QwgyX8vpYhDtg1bcrBjf99yiLQRRO1OkBsGMRfggKY,269
154
- fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl,sha256=GiSroiSex15vOtwhJJawk-jDrDY0rESR68LVskSXr6Y,2082
155
- fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl,sha256=5sDi6dDRQEZFBKFs3WyYXinM3uuYSO8YVxppKfjl6W4,1363
185
+ fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl,sha256=99ObNWDPUxWyt9SlAq2G0Axi0pXD2rReDaORRJ2CrKA,2134
186
+ fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl,sha256=uJ-PcyqAbVvXiAkN3weycihch2i8SZhHtovoTYpf2yY,1430
156
187
  fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl,sha256=1vkpDsh0IIMpAs5IwIykB0Q2kkPXjyzf6WSwsbVjAJY,195
157
188
  fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl,sha256=EbyILNe1b0igngbhHxIiFVjJDPSgnrfhSRJjkCB2dDk,197
158
189
  fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.py-tpl,sha256=XGvDbhww40DWDTiFJwqqd28AdTzX_hDRw2iZlI6Uufc,619
@@ -165,7 +196,7 @@ fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl,sha
165
196
  fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/test_main.py-tpl,sha256=XaA1nrFsPZNNlNW99IKba0rXo0i3FjcmP8_CdLpp4eQ,1149
166
197
  fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl,sha256=mmBW2Rz0aEIEuU6qDmr1jC5WF2vhU1u-A_7xsQe7iEc,664
167
198
  fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl,sha256=dB3fsdlrhW2pLIIRKRxGrA_yqttEbeDtgQlA6YstKYc,6395
168
- fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl,sha256=ej4xjMl4nT7zEeBFNtdPW4NmexeKLEHHZ-TcHUOZhHA,1674
199
+ fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl,sha256=jZ27eRcebkQbuMzlFps-7Evnofygj44lrvbZxV7ImMg,1741
169
200
  fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl,sha256=cLN3YKixrPYphMQyz8L_STcImPVtpCPTLsG4cNgBEqc,711
170
201
  fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl,sha256=lMHoGl8naqGqYnW3WQ5zKJSkFFrWa4EvooA3xyj5Duk,215
171
202
  fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl,sha256=TbnPdvBtO-k4XfAnYxUatrsXn4QniW6THmR0gwqshfs,397
@@ -199,7 +230,7 @@ fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl,sha256=
199
230
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl,sha256=959SSsG-ZCZ7edlWW817Sp6OlNkEARmQ0DogjsJ4iWo,3779
200
231
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl,sha256=iuWH5I4GY3v3-Sx8VHiLxY8OY_lrrBOXlou8fd0GEZ0,3743
201
232
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl,sha256=QLafkdBz_NK-2TXOP0XVUu5TklewBU1UTESv_-PmtYo,913
202
- fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl,sha256=BGH20jA6kzzyKbS57xOgWcTjIZVSWf61VWADcznxsu0,1700
233
+ fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl,sha256=gfVLrat_rsZDoNaYMydVLNjfC7NPstQNGt2xH62SsEA,1767
203
234
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl,sha256=trZ2kb7W1Z-YpkI7p5UjoxFsN2FJSxViJmXxrsx-5dQ,717
204
235
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/format.sh-tpl,sha256=wivOKoO8NCXimBSWwLYGh43UW0ufHTRX1LiFm3ZVSmc,44
205
236
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl,sha256=9V3e8ckaQ8bfNyRdhnmSfRy9UkUS3XoV9ziEOXChdog,53
@@ -235,7 +266,7 @@ fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/__init__.py-tpl,
235
266
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl,sha256=nLU0b7-ogFu9fh1fiVaubzoP7YHedqm4ZKZLC-JlJT0,1836
236
267
  fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/test_items.py-tpl,sha256=yTo_ikmylVK4MCSEZ5gDFpuAl1M7kmHJrK5x_B7xnj4,1323
237
268
  fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl,sha256=ohpJQPLhqgRA31b-zNkA-_JVi4een-V3aAUDyliJfZ0,961
238
- fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl,sha256=a-IRMBKraNVp6QoNkB4B3yfFTCoHxL_Xzee0rGUPmNg,518
269
+ fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl,sha256=jTu63mSPe3S0c4cInxMQTDwm_ywZIlqRQurHYuX44Ys,585
239
270
  fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl,sha256=erLKEM8NsAizfRPuAzSxsN1f4wRDCu6317sQsKsob-s,136
240
271
  fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl,sha256=TZwd8ZS3L0k5sRBry5KicHLvfzncyYSwNDB-aaJDZVQ,74
241
272
  fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.py-tpl,sha256=TvnetqA-GuvlzNvBb-SwrlMfJUyegQcnVdg31zJxzfA,339
@@ -252,5 +283,5 @@ fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl,sha256
252
283
  fastapi_fastkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
284
  fastapi_fastkit/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
254
285
  fastapi_fastkit/utils/logging.py,sha256=oU7BnWInxzl_Gk8kGQ0f6cKdNHZcOVVcSHY4I9MTmR8,6431
255
- fastapi_fastkit/utils/main.py,sha256=iL1_dM2L2LLfGH9QvKhiup9wiBISrpDkJbXPSn1MJyE,9298
256
- fastapi_fastkit-1.2.1.dist-info/RECORD,,
286
+ fastapi_fastkit/utils/main.py,sha256=6GWMk4zXpLXTVo0hPQ2yPSk1ccFn1vD05Cde3Rg8--M,11807
287
+ fastapi_fastkit-1.3.0.dist-info/RECORD,,