fastapi-voyager 0.16.0a1__tar.gz → 0.16.0a2__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.
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/PKG-INFO +23 -5
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/docs/changelog.md +2 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/pyproject.toml +28 -3
- fastapi_voyager-0.16.0a2/setup-django-ninja.sh +48 -0
- fastapi_voyager-0.16.0a2/setup-fastapi.sh +48 -0
- fastapi_voyager-0.16.0a2/setup-litestar.sh +48 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/fastapi_adapter.py +7 -5
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/litestar_adapter.py +4 -4
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/cli.py +11 -5
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/fastapi.py +15 -4
- fastapi_voyager-0.16.0a2/src/fastapi_voyager/version.py +2 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/uv.lock +92 -10
- fastapi_voyager-0.16.0a1/src/fastapi_voyager/version.py +0 -2
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.githooks/README.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.githooks/pre-commit +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.github/workflows/publish.yml +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.gitignore +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.prettierignore +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.prettierrc +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.python-version +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/CONTRIBUTING.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/LICENSE +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/README.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/docs/claude/0_REFACTORING_RENDER_NOTES.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/docs/idea.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/package-lock.json +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/release.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/setup-hooks.sh +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/base.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/common.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/django_ninja_adapter.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/er_diagram.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/filter.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/base.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/detector.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/django_ninja.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/litestar.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/module.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/pydantic_resolve_util.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/render.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/render_style.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/server.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/cluster.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/cluster_container.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/digraph.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/er_diagram.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/link.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/route_node.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/schema_node.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/tag_node.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/html/colored_text.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/html/pydantic_meta.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/html/schema_field_row.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/html/schema_header.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/html/schema_table.j2 +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/type.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/type_helper.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/voyager.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/component/demo.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/component/render-graph.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/component/route-code-display.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/component/schema-code-display.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/graph-ui.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/graphviz.svg.css +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/graphviz.svg.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/android-chrome-192x192.png +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/android-chrome-512x512.png +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/apple-touch-icon.png +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/favicon-16x16.png +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/favicon-32x32.png +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/favicon.ico +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/site.webmanifest +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/index.html +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/quasar.min.css +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/quasar.min.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/store.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/vue-main.js +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/README.md +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/django_ninja/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/django_ninja/demo.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/django_ninja/embedding.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/django_ninja/settings.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/django_ninja/urls.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/embedding_test_utils.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/fastapi/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/fastapi/demo.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/fastapi/demo_anno.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/fastapi/embedding.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/litestar/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/litestar/demo.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/litestar/embedding.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/service/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/service/schema/__init__.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/service/schema/base_entity.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/service/schema/extra.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/service/schema/schema.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_analysis.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_embedding_django_ninja.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_embedding_fastapi.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_embedding_litestar.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_filter.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_generic.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_import.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_module.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_resolve_util_impl.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/tests/test_type_helper.py +0 -0
- {fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/voyager.jpg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-voyager
|
|
3
|
-
Version: 0.16.
|
|
3
|
+
Version: 0.16.0a2
|
|
4
4
|
Summary: Visualize FastAPI application's routing tree and dependencies
|
|
5
5
|
Project-URL: Homepage, https://github.com/allmonday/fastapi-voyager
|
|
6
6
|
Project-URL: Source, https://github.com/allmonday/fastapi-voyager
|
|
@@ -20,15 +20,33 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
20
20
|
Requires-Python: >=3.10
|
|
21
21
|
Requires-Dist: jinja2>=3.0.0
|
|
22
22
|
Requires-Dist: pydantic-resolve>=2.4.3
|
|
23
|
+
Provides-Extra: all
|
|
24
|
+
Requires-Dist: django-ninja>=1.5.3; extra == 'all'
|
|
25
|
+
Requires-Dist: django>=4.2; extra == 'all'
|
|
26
|
+
Requires-Dist: fastapi>=0.110; extra == 'all'
|
|
27
|
+
Requires-Dist: httpx; extra == 'all'
|
|
28
|
+
Requires-Dist: litestar>=2.19.0; extra == 'all'
|
|
29
|
+
Requires-Dist: pydantic>=2.0; extra == 'all'
|
|
30
|
+
Requires-Dist: pytest; extra == 'all'
|
|
31
|
+
Requires-Dist: pytest-asyncio; extra == 'all'
|
|
32
|
+
Requires-Dist: ruff; extra == 'all'
|
|
33
|
+
Requires-Dist: uvicorn; extra == 'all'
|
|
23
34
|
Provides-Extra: dev
|
|
24
|
-
Requires-Dist: django-ninja; extra == 'dev'
|
|
25
|
-
Requires-Dist: fastapi>=0.110; extra == 'dev'
|
|
26
35
|
Requires-Dist: httpx; extra == 'dev'
|
|
27
|
-
Requires-Dist: litestar; extra == 'dev'
|
|
28
36
|
Requires-Dist: pytest; extra == 'dev'
|
|
29
37
|
Requires-Dist: pytest-asyncio; extra == 'dev'
|
|
30
38
|
Requires-Dist: ruff; extra == 'dev'
|
|
31
|
-
|
|
39
|
+
Provides-Extra: django-ninja
|
|
40
|
+
Requires-Dist: django-ninja>=1.5.3; extra == 'django-ninja'
|
|
41
|
+
Requires-Dist: django>=4.2; extra == 'django-ninja'
|
|
42
|
+
Requires-Dist: uvicorn; extra == 'django-ninja'
|
|
43
|
+
Provides-Extra: fastapi
|
|
44
|
+
Requires-Dist: fastapi>=0.110; extra == 'fastapi'
|
|
45
|
+
Requires-Dist: uvicorn; extra == 'fastapi'
|
|
46
|
+
Provides-Extra: litestar
|
|
47
|
+
Requires-Dist: litestar>=2.19.0; extra == 'litestar'
|
|
48
|
+
Requires-Dist: pydantic>=2.0; extra == 'litestar'
|
|
49
|
+
Requires-Dist: uvicorn; extra == 'litestar'
|
|
32
50
|
Description-Content-Type: text/markdown
|
|
33
51
|
|
|
34
52
|
[](https://pypi.python.org/pypi/fastapi-voyager)
|
|
@@ -31,7 +31,11 @@ Homepage = "https://github.com/allmonday/fastapi-voyager"
|
|
|
31
31
|
Source = "https://github.com/allmonday/fastapi-voyager"
|
|
32
32
|
|
|
33
33
|
[project.optional-dependencies]
|
|
34
|
-
dev = ["
|
|
34
|
+
dev = ["ruff", "pytest", "pytest-asyncio", "httpx"]
|
|
35
|
+
fastapi = ["fastapi>=0.110", "uvicorn"]
|
|
36
|
+
django-ninja = ["django>=4.2", "django-ninja>=1.5.3", "uvicorn"]
|
|
37
|
+
litestar = ["litestar>=2.19.0", "pydantic>=2.0", "uvicorn"]
|
|
38
|
+
all = ["fastapi-voyager[dev,fastapi,django-ninja,litestar]"]
|
|
35
39
|
|
|
36
40
|
[build-system]
|
|
37
41
|
requires = ["hatchling"]
|
|
@@ -54,9 +58,30 @@ select = ["E", "F", "I", "UP", "B"]
|
|
|
54
58
|
|
|
55
59
|
[dependency-groups]
|
|
56
60
|
dev = [
|
|
61
|
+
"httpx>=0.28.1",
|
|
62
|
+
"pytest-asyncio>=1.3.0",
|
|
63
|
+
"pytest>=8.0.0",
|
|
64
|
+
"ruff>=0.9.0",
|
|
65
|
+
]
|
|
66
|
+
fastapi = [
|
|
67
|
+
"fastapi>=0.116.1",
|
|
68
|
+
"uvicorn>=0.34.0",
|
|
69
|
+
]
|
|
70
|
+
django-ninja = [
|
|
71
|
+
"django>=4.2",
|
|
72
|
+
"django-ninja>=1.5.3",
|
|
73
|
+
"uvicorn>=0.34.0",
|
|
74
|
+
]
|
|
75
|
+
litestar = [
|
|
76
|
+
"litestar>=2.19.0",
|
|
77
|
+
"pydantic>=2.0",
|
|
78
|
+
"uvicorn>=0.34.0",
|
|
79
|
+
]
|
|
80
|
+
all = [
|
|
81
|
+
"django>=4.2",
|
|
57
82
|
"django-ninja>=1.5.3",
|
|
58
83
|
"fastapi>=0.116.1",
|
|
59
|
-
"httpx>=0.28.1",
|
|
60
84
|
"litestar>=2.19.0",
|
|
61
|
-
"
|
|
85
|
+
"pydantic>=2.0",
|
|
86
|
+
"uvicorn>=0.34.0",
|
|
62
87
|
]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Django Ninja Development Setup Script
|
|
3
|
+
# Usage: ./setup-django-ninja.sh [--no-sync]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
echo "🚀 Setting up Django Ninja development environment..."
|
|
8
|
+
echo ""
|
|
9
|
+
|
|
10
|
+
# Parse arguments
|
|
11
|
+
SYNC=true
|
|
12
|
+
for arg in "$@"; do
|
|
13
|
+
case $arg in
|
|
14
|
+
--no-sync)
|
|
15
|
+
SYNC=false
|
|
16
|
+
shift
|
|
17
|
+
;;
|
|
18
|
+
esac
|
|
19
|
+
done
|
|
20
|
+
|
|
21
|
+
# Sync dependencies
|
|
22
|
+
if [ "$SYNC" = true ]; then
|
|
23
|
+
echo "📦 Syncing dependencies..."
|
|
24
|
+
uv sync --group dev --group django-ninja
|
|
25
|
+
echo "✅ Dependencies synced"
|
|
26
|
+
echo ""
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Check if uvicorn is installed
|
|
30
|
+
echo "🔍 Checking uvicorn installation..."
|
|
31
|
+
if uv run which uvicorn > /dev/null 2>&1; then
|
|
32
|
+
UVICORN_PATH=$(uv run which uvicorn)
|
|
33
|
+
echo "✅ Uvicorn found at: $UVICORN_PATH"
|
|
34
|
+
else
|
|
35
|
+
echo "❌ Uvicorn not found in project environment"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
echo ""
|
|
39
|
+
|
|
40
|
+
# Start Django Ninja server
|
|
41
|
+
echo "🌟 Starting Django Ninja Voyager server..."
|
|
42
|
+
echo " App: tests.django_ninja.embedding:application"
|
|
43
|
+
echo " URL: http://127.0.0.1:8000"
|
|
44
|
+
echo ""
|
|
45
|
+
echo "Press Ctrl+C to stop the server"
|
|
46
|
+
echo ""
|
|
47
|
+
|
|
48
|
+
uv run uvicorn tests.django_ninja.embedding:application --reload --host 127.0.0.1 --port 8000
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# FastAPI Development Setup Script
|
|
3
|
+
# Usage: ./setup-fastapi.sh [--no-sync]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
echo "🚀 Setting up FastAPI development environment..."
|
|
8
|
+
echo ""
|
|
9
|
+
|
|
10
|
+
# Parse arguments
|
|
11
|
+
SYNC=true
|
|
12
|
+
for arg in "$@"; do
|
|
13
|
+
case $arg in
|
|
14
|
+
--no-sync)
|
|
15
|
+
SYNC=false
|
|
16
|
+
shift
|
|
17
|
+
;;
|
|
18
|
+
esac
|
|
19
|
+
done
|
|
20
|
+
|
|
21
|
+
# Sync dependencies
|
|
22
|
+
if [ "$SYNC" = true ]; then
|
|
23
|
+
echo "📦 Syncing dependencies..."
|
|
24
|
+
uv sync --group dev --group fastapi
|
|
25
|
+
echo "✅ Dependencies synced"
|
|
26
|
+
echo ""
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Check if uvicorn is installed
|
|
30
|
+
echo "🔍 Checking uvicorn installation..."
|
|
31
|
+
if uv run which uvicorn > /dev/null 2>&1; then
|
|
32
|
+
UVICORN_PATH=$(uv run which uvicorn)
|
|
33
|
+
echo "✅ Uvicorn found at: $UVICORN_PATH"
|
|
34
|
+
else
|
|
35
|
+
echo "❌ Uvicorn not found in project environment"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
echo ""
|
|
39
|
+
|
|
40
|
+
# Start FastAPI server
|
|
41
|
+
echo "🌟 Starting FastAPI Voyager server..."
|
|
42
|
+
echo " App: tests.fastapi.embedding:app"
|
|
43
|
+
echo " URL: http://127.0.0.1:8000"
|
|
44
|
+
echo ""
|
|
45
|
+
echo "Press Ctrl+C to stop the server"
|
|
46
|
+
echo ""
|
|
47
|
+
|
|
48
|
+
uv run uvicorn tests.fastapi.embedding:app --reload --host 127.0.0.1 --port 8000
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Litestar Development Setup Script
|
|
3
|
+
# Usage: ./setup-litestar.sh [--no-sync]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
echo "🚀 Setting up Litestar development environment..."
|
|
8
|
+
echo ""
|
|
9
|
+
|
|
10
|
+
# Parse arguments
|
|
11
|
+
SYNC=true
|
|
12
|
+
for arg in "$@"; do
|
|
13
|
+
case $arg in
|
|
14
|
+
--no-sync)
|
|
15
|
+
SYNC=false
|
|
16
|
+
shift
|
|
17
|
+
;;
|
|
18
|
+
esac
|
|
19
|
+
done
|
|
20
|
+
|
|
21
|
+
# Sync dependencies
|
|
22
|
+
if [ "$SYNC" = true ]; then
|
|
23
|
+
echo "📦 Syncing dependencies..."
|
|
24
|
+
uv sync --group dev --group litestar
|
|
25
|
+
echo "✅ Dependencies synced"
|
|
26
|
+
echo ""
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Check if uvicorn is installed
|
|
30
|
+
echo "🔍 Checking uvicorn installation..."
|
|
31
|
+
if uv run which uvicorn > /dev/null 2>&1; then
|
|
32
|
+
UVICORN_PATH=$(uv run which uvicorn)
|
|
33
|
+
echo "✅ Uvicorn found at: $UVICORN_PATH"
|
|
34
|
+
else
|
|
35
|
+
echo "❌ Uvicorn not found in project environment"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
echo ""
|
|
39
|
+
|
|
40
|
+
# Start Litestar server
|
|
41
|
+
echo "🌟 Starting Litestar Voyager server..."
|
|
42
|
+
echo " App: tests.litestar.embedding:asgi_app"
|
|
43
|
+
echo " URL: http://127.0.0.1:8000"
|
|
44
|
+
echo ""
|
|
45
|
+
echo "Press Ctrl+C to stop the server"
|
|
46
|
+
echo ""
|
|
47
|
+
|
|
48
|
+
uv run uvicorn tests.litestar.embedding:asgi_app --reload --host 127.0.0.1 --port 8000
|
|
@@ -5,11 +5,7 @@ This module provides the FastAPI-specific implementation of the voyager server.
|
|
|
5
5
|
"""
|
|
6
6
|
from typing import Any, Literal
|
|
7
7
|
|
|
8
|
-
from fastapi import APIRouter, FastAPI
|
|
9
|
-
from fastapi.responses import HTMLResponse, JSONResponse, PlainTextResponse
|
|
10
|
-
from fastapi.staticfiles import StaticFiles
|
|
11
8
|
from pydantic import BaseModel
|
|
12
|
-
from starlette.middleware.gzip import GZipMiddleware
|
|
13
9
|
|
|
14
10
|
from fastapi_voyager.adapters.base import VoyagerAdapter
|
|
15
11
|
from fastapi_voyager.adapters.common import STATIC_FILES_PATH, VoyagerContext
|
|
@@ -98,8 +94,14 @@ class FastAPIAdapter(VoyagerAdapter):
|
|
|
98
94
|
)
|
|
99
95
|
self.gzip_minimum_size = gzip_minimum_size
|
|
100
96
|
|
|
101
|
-
def create_app(self) ->
|
|
97
|
+
def create_app(self) -> Any:
|
|
102
98
|
"""Create and return a FastAPI application with voyager endpoints."""
|
|
99
|
+
# Lazy import FastAPI to avoid import errors when framework is not installed
|
|
100
|
+
from fastapi import APIRouter, FastAPI
|
|
101
|
+
from fastapi.responses import HTMLResponse, JSONResponse, PlainTextResponse
|
|
102
|
+
from fastapi.staticfiles import StaticFiles
|
|
103
|
+
from starlette.middleware.gzip import GZipMiddleware
|
|
104
|
+
|
|
103
105
|
router = APIRouter(tags=["fastapi-voyager"])
|
|
104
106
|
|
|
105
107
|
@router.post("/er-diagram", response_class=PlainTextResponse)
|
|
@@ -5,9 +5,6 @@ This module provides the Litestar-specific implementation of the voyager server.
|
|
|
5
5
|
"""
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
|
-
from litestar import Litestar, MediaType, Request, Response, get, post
|
|
9
|
-
from litestar.static_files import create_static_files_router
|
|
10
|
-
|
|
11
8
|
from fastapi_voyager.adapters.base import VoyagerAdapter
|
|
12
9
|
from fastapi_voyager.adapters.common import STATIC_FILES_PATH, WEB_DIR, VoyagerContext
|
|
13
10
|
from fastapi_voyager.type import CoreData, SchemaNode, Tag
|
|
@@ -47,8 +44,11 @@ class LitestarAdapter(VoyagerAdapter):
|
|
|
47
44
|
)
|
|
48
45
|
self.gzip_minimum_size = gzip_minimum_size
|
|
49
46
|
|
|
50
|
-
def create_app(self) ->
|
|
47
|
+
def create_app(self) -> Any:
|
|
51
48
|
"""Create and return a Litestar application with voyager endpoints."""
|
|
49
|
+
# Lazy import Litestar to avoid import errors when framework is not installed
|
|
50
|
+
from litestar import Litestar, MediaType, Request, Response, get, post
|
|
51
|
+
from litestar.static_files import create_static_files_router
|
|
52
52
|
|
|
53
53
|
@get("/er-diagram")
|
|
54
54
|
async def get_er_diagram(request: Request) -> str:
|
|
@@ -5,17 +5,19 @@ import importlib.util
|
|
|
5
5
|
import logging
|
|
6
6
|
import os
|
|
7
7
|
import sys
|
|
8
|
-
|
|
9
|
-
from fastapi import FastAPI
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
10
9
|
|
|
11
10
|
from fastapi_voyager import server as viz_server
|
|
12
11
|
from fastapi_voyager.version import __version__
|
|
13
12
|
from fastapi_voyager.voyager import Voyager
|
|
14
13
|
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from fastapi import FastAPI
|
|
16
|
+
|
|
15
17
|
logger = logging.getLogger(__name__)
|
|
16
18
|
|
|
17
19
|
|
|
18
|
-
def load_fastapi_app_from_file(module_path: str, app_name: str = "app") -> FastAPI | None:
|
|
20
|
+
def load_fastapi_app_from_file(module_path: str, app_name: str = "app") -> "FastAPI | None":
|
|
19
21
|
"""Load FastAPI app from a Python module file."""
|
|
20
22
|
try:
|
|
21
23
|
# Convert relative path to absolute path
|
|
@@ -35,6 +37,8 @@ def load_fastapi_app_from_file(module_path: str, app_name: str = "app") -> FastA
|
|
|
35
37
|
# Get the FastAPI app instance
|
|
36
38
|
if hasattr(module, app_name):
|
|
37
39
|
app = getattr(module, app_name)
|
|
40
|
+
# Lazy import to avoid import errors when FastAPI is not installed
|
|
41
|
+
from fastapi import FastAPI
|
|
38
42
|
if isinstance(app, FastAPI):
|
|
39
43
|
return app
|
|
40
44
|
logger.error(f"'{app_name}' is not a FastAPI instance")
|
|
@@ -47,7 +51,7 @@ def load_fastapi_app_from_file(module_path: str, app_name: str = "app") -> FastA
|
|
|
47
51
|
return None
|
|
48
52
|
|
|
49
53
|
|
|
50
|
-
def load_fastapi_app_from_module(module_name: str, app_name: str = "app") -> FastAPI | None:
|
|
54
|
+
def load_fastapi_app_from_module(module_name: str, app_name: str = "app") -> "FastAPI | None":
|
|
51
55
|
"""Load FastAPI app from a Python module name."""
|
|
52
56
|
try:
|
|
53
57
|
# Temporarily add the current working directory to sys.path
|
|
@@ -65,6 +69,8 @@ def load_fastapi_app_from_module(module_name: str, app_name: str = "app") -> Fas
|
|
|
65
69
|
# Get the FastAPI app instance
|
|
66
70
|
if hasattr(module, app_name):
|
|
67
71
|
app = getattr(module, app_name)
|
|
72
|
+
# Lazy import to avoid import errors when FastAPI is not installed
|
|
73
|
+
from fastapi import FastAPI
|
|
68
74
|
if isinstance(app, FastAPI):
|
|
69
75
|
return app
|
|
70
76
|
logger.error(f"'{app_name}' is not a FastAPI instance")
|
|
@@ -85,7 +91,7 @@ def load_fastapi_app_from_module(module_name: str, app_name: str = "app") -> Fas
|
|
|
85
91
|
|
|
86
92
|
|
|
87
93
|
def generate_visualization(
|
|
88
|
-
app: FastAPI,
|
|
94
|
+
app: "FastAPI",
|
|
89
95
|
output_file: str = "router_viz.dot", tags: list[str] | None = None,
|
|
90
96
|
schema: str | None = None,
|
|
91
97
|
show_fields: bool = False,
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/fastapi.py
RENAMED
|
@@ -4,11 +4,13 @@ FastAPI implementation of the AppIntrospector interface.
|
|
|
4
4
|
This module provides the adapter that allows fastapi-voyager to work with FastAPI applications.
|
|
5
5
|
"""
|
|
6
6
|
from collections.abc import Iterator
|
|
7
|
-
|
|
8
|
-
from fastapi import FastAPI, routing
|
|
7
|
+
from typing import TYPE_CHECKING, Any
|
|
9
8
|
|
|
10
9
|
from fastapi_voyager.introspectors.base import AppIntrospector, RouteInfo
|
|
11
10
|
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from fastapi import FastAPI
|
|
13
|
+
|
|
12
14
|
|
|
13
15
|
class FastAPIIntrospector(AppIntrospector):
|
|
14
16
|
"""
|
|
@@ -18,7 +20,7 @@ class FastAPIIntrospector(AppIntrospector):
|
|
|
18
20
|
and converts it to the framework-agnostic RouteInfo format.
|
|
19
21
|
"""
|
|
20
22
|
|
|
21
|
-
def __init__(self, app: FastAPI, swagger_url: str | None = None):
|
|
23
|
+
def __init__(self, app: "FastAPI", swagger_url: str | None = None):
|
|
22
24
|
"""
|
|
23
25
|
Initialize the FastAPI introspector.
|
|
24
26
|
|
|
@@ -26,6 +28,12 @@ class FastAPIIntrospector(AppIntrospector):
|
|
|
26
28
|
app: The FastAPI application instance
|
|
27
29
|
swagger_url: Optional custom URL to Swagger documentation
|
|
28
30
|
"""
|
|
31
|
+
# Lazy import to avoid import errors when FastAPI is not installed
|
|
32
|
+
from fastapi import FastAPI
|
|
33
|
+
|
|
34
|
+
if not isinstance(app, FastAPI):
|
|
35
|
+
raise TypeError(f"Expected FastAPI instance, got {type(app)}")
|
|
36
|
+
|
|
29
37
|
self.app = app
|
|
30
38
|
self.swagger_url = swagger_url or "/docs"
|
|
31
39
|
|
|
@@ -36,6 +44,9 @@ class FastAPIIntrospector(AppIntrospector):
|
|
|
36
44
|
Yields:
|
|
37
45
|
RouteInfo: Standardized route information for each API route
|
|
38
46
|
"""
|
|
47
|
+
# Lazy import routing to avoid import errors when FastAPI is not installed
|
|
48
|
+
from fastapi import routing
|
|
49
|
+
|
|
39
50
|
for route in self.app.routes:
|
|
40
51
|
# Only process APIRoute instances (not static files, etc.)
|
|
41
52
|
if isinstance(route, routing.APIRoute):
|
|
@@ -66,7 +77,7 @@ class FastAPIIntrospector(AppIntrospector):
|
|
|
66
77
|
"""
|
|
67
78
|
return self.swagger_url
|
|
68
79
|
|
|
69
|
-
def _get_route_id(self, route:
|
|
80
|
+
def _get_route_id(self, route: Any) -> str:
|
|
70
81
|
"""
|
|
71
82
|
Generate a unique identifier for the route.
|
|
72
83
|
|
|
@@ -188,48 +188,130 @@ dependencies = [
|
|
|
188
188
|
]
|
|
189
189
|
|
|
190
190
|
[package.optional-dependencies]
|
|
191
|
-
|
|
191
|
+
all = [
|
|
192
|
+
{ name = "django", version = "5.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
|
193
|
+
{ name = "django", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
192
194
|
{ name = "django-ninja" },
|
|
193
195
|
{ name = "fastapi" },
|
|
194
196
|
{ name = "httpx" },
|
|
195
197
|
{ name = "litestar" },
|
|
198
|
+
{ name = "pydantic" },
|
|
199
|
+
{ name = "pytest" },
|
|
200
|
+
{ name = "pytest-asyncio" },
|
|
201
|
+
{ name = "ruff" },
|
|
202
|
+
{ name = "uvicorn" },
|
|
203
|
+
]
|
|
204
|
+
dev = [
|
|
205
|
+
{ name = "httpx" },
|
|
196
206
|
{ name = "pytest" },
|
|
197
207
|
{ name = "pytest-asyncio" },
|
|
198
208
|
{ name = "ruff" },
|
|
209
|
+
]
|
|
210
|
+
django-ninja = [
|
|
211
|
+
{ name = "django", version = "5.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
|
212
|
+
{ name = "django", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
213
|
+
{ name = "django-ninja" },
|
|
214
|
+
{ name = "uvicorn" },
|
|
215
|
+
]
|
|
216
|
+
fastapi = [
|
|
217
|
+
{ name = "fastapi" },
|
|
218
|
+
{ name = "uvicorn" },
|
|
219
|
+
]
|
|
220
|
+
litestar = [
|
|
221
|
+
{ name = "litestar" },
|
|
222
|
+
{ name = "pydantic" },
|
|
199
223
|
{ name = "uvicorn" },
|
|
200
224
|
]
|
|
201
225
|
|
|
202
226
|
[package.dev-dependencies]
|
|
203
|
-
|
|
227
|
+
all = [
|
|
228
|
+
{ name = "django", version = "5.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
|
229
|
+
{ name = "django", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
204
230
|
{ name = "django-ninja" },
|
|
205
231
|
{ name = "fastapi" },
|
|
206
|
-
{ name = "httpx" },
|
|
207
232
|
{ name = "litestar" },
|
|
233
|
+
{ name = "pydantic" },
|
|
234
|
+
{ name = "uvicorn" },
|
|
235
|
+
]
|
|
236
|
+
dev = [
|
|
237
|
+
{ name = "httpx" },
|
|
238
|
+
{ name = "pytest" },
|
|
208
239
|
{ name = "pytest-asyncio" },
|
|
240
|
+
{ name = "ruff" },
|
|
241
|
+
]
|
|
242
|
+
django-ninja = [
|
|
243
|
+
{ name = "django", version = "5.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
|
244
|
+
{ name = "django", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
245
|
+
{ name = "django-ninja" },
|
|
246
|
+
{ name = "uvicorn" },
|
|
247
|
+
]
|
|
248
|
+
fastapi = [
|
|
249
|
+
{ name = "fastapi" },
|
|
250
|
+
{ name = "uvicorn" },
|
|
251
|
+
]
|
|
252
|
+
litestar = [
|
|
253
|
+
{ name = "litestar" },
|
|
254
|
+
{ name = "pydantic" },
|
|
255
|
+
{ name = "uvicorn" },
|
|
209
256
|
]
|
|
210
257
|
|
|
211
258
|
[package.metadata]
|
|
212
259
|
requires-dist = [
|
|
213
|
-
{ name = "django
|
|
214
|
-
{ name = "
|
|
260
|
+
{ name = "django", marker = "extra == 'all'", specifier = ">=4.2" },
|
|
261
|
+
{ name = "django", marker = "extra == 'django-ninja'", specifier = ">=4.2" },
|
|
262
|
+
{ name = "django-ninja", marker = "extra == 'all'", specifier = ">=1.5.3" },
|
|
263
|
+
{ name = "django-ninja", marker = "extra == 'django-ninja'", specifier = ">=1.5.3" },
|
|
264
|
+
{ name = "fastapi", marker = "extra == 'all'", specifier = ">=0.110" },
|
|
265
|
+
{ name = "fastapi", marker = "extra == 'fastapi'", specifier = ">=0.110" },
|
|
266
|
+
{ name = "httpx", marker = "extra == 'all'" },
|
|
215
267
|
{ name = "httpx", marker = "extra == 'dev'" },
|
|
216
268
|
{ name = "jinja2", specifier = ">=3.0.0" },
|
|
217
|
-
{ name = "litestar", marker = "extra == '
|
|
269
|
+
{ name = "litestar", marker = "extra == 'all'", specifier = ">=2.19.0" },
|
|
270
|
+
{ name = "litestar", marker = "extra == 'litestar'", specifier = ">=2.19.0" },
|
|
271
|
+
{ name = "pydantic", marker = "extra == 'all'", specifier = ">=2.0" },
|
|
272
|
+
{ name = "pydantic", marker = "extra == 'litestar'", specifier = ">=2.0" },
|
|
218
273
|
{ name = "pydantic-resolve", specifier = ">=2.4.3" },
|
|
274
|
+
{ name = "pytest", marker = "extra == 'all'" },
|
|
219
275
|
{ name = "pytest", marker = "extra == 'dev'" },
|
|
276
|
+
{ name = "pytest-asyncio", marker = "extra == 'all'" },
|
|
220
277
|
{ name = "pytest-asyncio", marker = "extra == 'dev'" },
|
|
278
|
+
{ name = "ruff", marker = "extra == 'all'" },
|
|
221
279
|
{ name = "ruff", marker = "extra == 'dev'" },
|
|
222
|
-
{ name = "uvicorn", marker = "extra == '
|
|
280
|
+
{ name = "uvicorn", marker = "extra == 'all'" },
|
|
281
|
+
{ name = "uvicorn", marker = "extra == 'django-ninja'" },
|
|
282
|
+
{ name = "uvicorn", marker = "extra == 'fastapi'" },
|
|
283
|
+
{ name = "uvicorn", marker = "extra == 'litestar'" },
|
|
223
284
|
]
|
|
224
|
-
provides-extras = ["dev"]
|
|
285
|
+
provides-extras = ["all", "dev", "django-ninja", "fastapi", "litestar"]
|
|
225
286
|
|
|
226
287
|
[package.metadata.requires-dev]
|
|
227
|
-
|
|
288
|
+
all = [
|
|
289
|
+
{ name = "django", specifier = ">=4.2" },
|
|
228
290
|
{ name = "django-ninja", specifier = ">=1.5.3" },
|
|
229
291
|
{ name = "fastapi", specifier = ">=0.116.1" },
|
|
230
|
-
{ name = "httpx", specifier = ">=0.28.1" },
|
|
231
292
|
{ name = "litestar", specifier = ">=2.19.0" },
|
|
293
|
+
{ name = "pydantic", specifier = ">=2.0" },
|
|
294
|
+
{ name = "uvicorn", specifier = ">=0.34.0" },
|
|
295
|
+
]
|
|
296
|
+
dev = [
|
|
297
|
+
{ name = "httpx", specifier = ">=0.28.1" },
|
|
298
|
+
{ name = "pytest", specifier = ">=8.0.0" },
|
|
232
299
|
{ name = "pytest-asyncio", specifier = ">=1.3.0" },
|
|
300
|
+
{ name = "ruff", specifier = ">=0.9.0" },
|
|
301
|
+
]
|
|
302
|
+
django-ninja = [
|
|
303
|
+
{ name = "django", specifier = ">=4.2" },
|
|
304
|
+
{ name = "django-ninja", specifier = ">=1.5.3" },
|
|
305
|
+
{ name = "uvicorn", specifier = ">=0.34.0" },
|
|
306
|
+
]
|
|
307
|
+
fastapi = [
|
|
308
|
+
{ name = "fastapi", specifier = ">=0.116.1" },
|
|
309
|
+
{ name = "uvicorn", specifier = ">=0.34.0" },
|
|
310
|
+
]
|
|
311
|
+
litestar = [
|
|
312
|
+
{ name = "litestar", specifier = ">=2.19.0" },
|
|
313
|
+
{ name = "pydantic", specifier = ">=2.0" },
|
|
314
|
+
{ name = "uvicorn", specifier = ">=0.34.0" },
|
|
233
315
|
]
|
|
234
316
|
|
|
235
317
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/.github/ISSUE_TEMPLATE/feature_request.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/docs/claude/0_REFACTORING_RENDER_NOTES.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/adapters/common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/__init__.py
RENAMED
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/base.py
RENAMED
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/detector.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/introspectors/litestar.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/pydantic_resolve_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/cluster.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/digraph.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/link.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/templates/dot/tag_node.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/component/demo.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/graphviz.svg.css
RENAMED
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/graphviz.svg.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/favicon-16x16.png
RENAMED
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/favicon-32x32.png
RENAMED
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/favicon.ico
RENAMED
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/icon/site.webmanifest
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_voyager-0.16.0a1 → fastapi_voyager-0.16.0a2}/src/fastapi_voyager/web/quasar.min.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|