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.
- fastapi_fastkit/__init__.py +1 -1
- fastapi_fastkit/backend/inspector.py +153 -32
- fastapi_fastkit/backend/interactive/__init__.py +2 -0
- fastapi_fastkit/backend/interactive/config_builder.py +21 -2
- fastapi_fastkit/backend/interactive/prompts.py +52 -1
- fastapi_fastkit/backend/interactive/selectors.py +10 -0
- fastapi_fastkit/backend/main.py +79 -6
- fastapi_fastkit/backend/package_managers/factory.py +1 -1
- fastapi_fastkit/backend/package_managers/pdm_manager.py +3 -3
- fastapi_fastkit/backend/package_managers/poetry_manager.py +3 -3
- fastapi_fastkit/backend/package_managers/uv_manager.py +3 -3
- fastapi_fastkit/backend/project_builder/__init__.py +3 -0
- fastapi_fastkit/backend/project_builder/config_generator.py +17 -10
- fastapi_fastkit/backend/project_builder/preset_layout.py +203 -0
- fastapi_fastkit/backend/transducer.py +0 -1
- fastapi_fastkit/cli.py +77 -32
- fastapi_fastkit/core/settings.py +16 -0
- fastapi_fastkit/fastapi_project_template/README.md +72 -23
- fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +4 -1
- fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +4 -1
- fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +4 -1
- fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +4 -1
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +2 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +31 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +128 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +70 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +11 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/format.sh-tpl +5 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl +6 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl +8 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl +6 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/__init__.py-tpl +0 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/__init__.py-tpl +0 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/__init__.py-tpl +0 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl +11 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/router.py-tpl +12 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/__init__.py-tpl +0 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +49 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/__init__.py-tpl +0 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +48 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/__init__.py-tpl +0 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +9 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +17 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +48 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +59 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +23 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +52 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +25 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/__init__.py-tpl +0 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +24 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +11 -0
- fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +77 -0
- fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +2 -2
- fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +4 -1
- fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +4 -1
- fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +4 -1
- fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +4 -1
- fastapi_fastkit/utils/main.py +73 -6
- {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/METADATA +8 -5
- {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/RECORD +63 -32
- {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/WHEEL +0 -0
- {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/entry_points.txt +0 -0
- {fastapi_fastkit-1.2.1.dist-info → fastapi_fastkit-1.3.0.dist-info}/licenses/LICENSE +0 -0
|
File without changes
|
|
@@ -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
|
-
#
|
|
1
|
+
# Minimal FastAPI Template
|
|
2
2
|
|
|
3
|
-
>
|
|
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"
|
fastapi_fastkit/utils/main.py
CHANGED
|
@@ -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
|
|
277
|
-
|
|
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
|
|
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(
|
|
288
|
-
|
|
289
|
-
|
|
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.
|
|
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`
|
|
105
|
-
- Database and authentication configuration files
|
|
106
|
-
- Docker deployment files (Dockerfile
|
|
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
|
-
fastapi_fastkit-1.
|
|
3
|
-
fastapi_fastkit-1.
|
|
4
|
-
fastapi_fastkit-1.
|
|
5
|
-
fastapi_fastkit/__init__.py,sha256=
|
|
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=
|
|
9
|
-
fastapi_fastkit/backend/interactive/__init__.py,sha256=
|
|
10
|
-
fastapi_fastkit/backend/interactive/config_builder.py,sha256=
|
|
11
|
-
fastapi_fastkit/backend/interactive/prompts.py,sha256=
|
|
12
|
-
fastapi_fastkit/backend/interactive/selectors.py,sha256=
|
|
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=
|
|
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=
|
|
18
|
-
fastapi_fastkit/backend/package_managers/pdm_manager.py,sha256=
|
|
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=
|
|
21
|
-
fastapi_fastkit/backend/package_managers/uv_manager.py,sha256=
|
|
22
|
-
fastapi_fastkit/backend/project_builder/__init__.py,sha256=
|
|
23
|
-
fastapi_fastkit/backend/project_builder/config_generator.py,sha256=
|
|
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/
|
|
26
|
-
fastapi_fastkit/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
155
|
-
fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
256
|
-
fastapi_fastkit-1.
|
|
286
|
+
fastapi_fastkit/utils/main.py,sha256=6GWMk4zXpLXTVo0hPQ2yPSk1ccFn1vD05Cde3Rg8--M,11807
|
|
287
|
+
fastapi_fastkit-1.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|