fastapi-voyager 0.12.1__tar.gz → 0.12.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/PKG-INFO +5 -6
  2. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/README.md +4 -5
  3. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/docs/changelog.md +2 -0
  4. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/server.py +20 -2
  5. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/version.py +1 -1
  6. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/index.html +2 -0
  7. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/programatic.py +1 -0
  8. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/.github/workflows/publish.yml +0 -0
  9. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/.gitignore +0 -0
  10. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/.python-version +0 -0
  11. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/LICENSE +0 -0
  12. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/docs/idea.md +0 -0
  13. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/pyproject.toml +0 -0
  14. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/release.md +0 -0
  15. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/__init__.py +0 -0
  16. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/cli.py +0 -0
  17. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/filter.py +0 -0
  18. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/module.py +0 -0
  19. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/render.py +0 -0
  20. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/type.py +0 -0
  21. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/type_helper.py +0 -0
  22. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/voyager.py +0 -0
  23. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/component/render-graph.js +0 -0
  24. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/component/route-code-display.js +0 -0
  25. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/component/schema-code-display.js +0 -0
  26. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/component/schema-field-filter.js +0 -0
  27. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/graph-ui.js +0 -0
  28. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/graphviz.svg.css +0 -0
  29. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/graphviz.svg.js +0 -0
  30. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/icon/android-chrome-192x192.png +0 -0
  31. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/icon/android-chrome-512x512.png +0 -0
  32. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/icon/apple-touch-icon.png +0 -0
  33. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/icon/favicon-16x16.png +0 -0
  34. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/icon/favicon-32x32.png +0 -0
  35. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/icon/favicon.ico +0 -0
  36. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/icon/site.webmanifest +0 -0
  37. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/quasar.min.css +0 -0
  38. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/quasar.min.js +0 -0
  39. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/src/fastapi_voyager/web/vue-main.js +0 -0
  40. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/__init__.py +0 -0
  41. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/demo.py +0 -0
  42. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/demo_anno.py +0 -0
  43. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/service/__init__.py +0 -0
  44. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/service/schema.py +0 -0
  45. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/test_analysis.py +0 -0
  46. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/test_filter.py +0 -0
  47. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/test_generic.py +0 -0
  48. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/test_import.py +0 -0
  49. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/test_module.py +0 -0
  50. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/tests/test_type_helper.py +0 -0
  51. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/uv.lock +0 -0
  52. {fastapi_voyager-0.12.1 → fastapi_voyager-0.12.2}/voyager.jpg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-voyager
3
- Version: 0.12.1
3
+ Version: 0.12.2
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
@@ -40,6 +40,10 @@ Visualize your FastAPI endpoints, and explore them interactively.
40
40
 
41
41
  <img width="1600" height="986" alt="image" src="https://github.com/user-attachments/assets/8829cda0-f42d-4c84-be2f-b019bb5fe7e1" />
42
42
 
43
+ ## Plan & Raodmap
44
+ - [ideas](./docs/idea.md)
45
+ - [changelog & roadmap](./docs/changelog.md)
46
+
43
47
  ## Installation
44
48
 
45
49
  ```bash
@@ -176,8 +180,3 @@ backend:
176
180
  - `voyager.py`: main entry
177
181
  - `render.py`: generate dot file
178
182
  - `server.py`: serve mode
179
-
180
-
181
- ## Plan & Raodmap
182
- - [ideas](./docs/idea.md)
183
- - [changelog & roadmap](./docs/changelog.md)
@@ -11,6 +11,10 @@ Visualize your FastAPI endpoints, and explore them interactively.
11
11
 
12
12
  <img width="1600" height="986" alt="image" src="https://github.com/user-attachments/assets/8829cda0-f42d-4c84-be2f-b019bb5fe7e1" />
13
13
 
14
+ ## Plan & Raodmap
15
+ - [ideas](./docs/idea.md)
16
+ - [changelog & roadmap](./docs/changelog.md)
17
+
14
18
  ## Installation
15
19
 
16
20
  ```bash
@@ -147,8 +151,3 @@ backend:
147
151
  - `voyager.py`: main entry
148
152
  - `render.py`: generate dot file
149
153
  - `server.py`: serve mode
150
-
151
-
152
- ## Plan & Raodmap
153
- - [ideas](./docs/idea.md)
154
- - [changelog & roadmap](./docs/changelog.md)
@@ -106,6 +106,8 @@
106
106
  - [x] optimize dbclick style
107
107
  - [x] persist the tag/ route in url
108
108
  - 0.12.2
109
+ - [x] add google analytics
110
+ - 0.12.3
109
111
  - [ ] search tag/ route
110
112
  - [ ] refactor render.py
111
113
  - [ ] reorg: move variable into reactive in vue-main.js
@@ -6,7 +6,7 @@ from pydantic import BaseModel
6
6
  from fastapi.responses import HTMLResponse, PlainTextResponse, JSONResponse
7
7
  from fastapi.staticfiles import StaticFiles
8
8
  from fastapi_voyager.voyager import Voyager
9
- from fastapi_voyager.type import Tag, FieldInfo, CoreData, SchemaNode
9
+ from fastapi_voyager.type import Tag, CoreData, SchemaNode
10
10
  from fastapi_voyager.render import Renderer
11
11
  from fastapi_voyager.type_helper import get_source, get_vscode_link
12
12
  from fastapi_voyager.version import __version__
@@ -15,6 +15,22 @@ from fastapi_voyager.version import __version__
15
15
  WEB_DIR = Path(__file__).parent / "web"
16
16
  WEB_DIR.mkdir(exist_ok=True)
17
17
 
18
+ GA_PLACEHOLDER = "<!-- GA_SNIPPET -->"
19
+
20
+ def _build_ga_snippet(ga_id: Optional[str]) -> str:
21
+ if not ga_id:
22
+ return ""
23
+
24
+ return f""" <script async src="https://www.googletagmanager.com/gtag/js?id={ga_id}"></script>
25
+ <script>
26
+ window.dataLayer = window.dataLayer || [];
27
+ function gtag(){{dataLayer.push(arguments);}}
28
+ gtag('js', new Date());
29
+
30
+ gtag('config', '{ga_id}');
31
+ </script>
32
+ """
33
+
18
34
  INITIAL_PAGE_POLICY = Literal['first', 'full', 'empty']
19
35
 
20
36
  class OptionParam(BaseModel):
@@ -46,6 +62,7 @@ def create_voyager(
46
62
  swagger_url: Optional[str] = None,
47
63
  online_repo_url: Optional[str] = None,
48
64
  initial_page_policy: INITIAL_PAGE_POLICY = 'first',
65
+ ga_id: Optional[str] = None,
49
66
  ) -> FastAPI:
50
67
  router = APIRouter(tags=['fastapi-voyager'])
51
68
 
@@ -116,7 +133,8 @@ def create_voyager(
116
133
  def index():
117
134
  index_file = WEB_DIR / "index.html"
118
135
  if index_file.exists():
119
- return index_file.read_text(encoding="utf-8")
136
+ content = index_file.read_text(encoding="utf-8")
137
+ return content.replace(GA_PLACEHOLDER, _build_ga_snippet(ga_id))
120
138
  # fallback simple page if index.html missing
121
139
  return """
122
140
  <!doctype html>
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.12.1"
2
+ __version__ = "0.12.2"
@@ -477,5 +477,7 @@
477
477
  });
478
478
  </script>
479
479
  <script type="module" src="fastapi-voyager-static/vue-main.js"></script>
480
+
481
+ <!-- GA_SNIPPET -->
480
482
  </body>
481
483
  </html>
@@ -9,4 +9,5 @@ app.mount(
9
9
  module_prefix="tests.service",
10
10
  swagger_url="/docs",
11
11
  initial_page_policy='first',
12
+ ga_id='G-R64S7Q49VL',
12
13
  online_repo_url="https://github.com/allmonday/fastapi-voyager/blob/main"))