fastapi-voyager 0.12.1__py3-none-any.whl → 0.12.2__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_voyager/server.py CHANGED
@@ -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>
@@ -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)
@@ -3,15 +3,15 @@ fastapi_voyager/cli.py,sha256=xK8DT-m2qP38FK2dGhLP-sHEuS29SBw6ACrnX9w85P0,10521
3
3
  fastapi_voyager/filter.py,sha256=9Y-NepveIiCLOI-5eXk6DNK9H3dr5_h4xUbWYHkbo7M,11552
4
4
  fastapi_voyager/module.py,sha256=Z2QHNmiLk6ZAJlm2nSmO875Q33TweSg8UxZSzIpU9zY,3499
5
5
  fastapi_voyager/render.py,sha256=8hVsEDQi2-aP3QKN6KI3RnNz0uG-FuDr_k4D7QNsdQQ,9823
6
- fastapi_voyager/server.py,sha256=XEWEfW02eha07piXfEOYeVC1lD6sMgzsCpRcNWgs_HE,6587
6
+ fastapi_voyager/server.py,sha256=fVKruGccBJ039z3EbYRjqUYHbbw5HOlo5jzK_n76ids,7092
7
7
  fastapi_voyager/type.py,sha256=VmcTB1G-LOT70EWCzi4LU_FUkSGWUIBJX15T_J5HnOo,1764
8
8
  fastapi_voyager/type_helper.py,sha256=TqtYP2_54aar_iQjD0XhjJPXYhfi6icnPPrxkj0a4sk,9523
9
- fastapi_voyager/version.py,sha256=RTrsxEThIEJd6F22bbMAXSloKYEyLTUiKljxyyCXfjQ,49
9
+ fastapi_voyager/version.py,sha256=jnAp1zbYtBp4Jx35wH9VM8Hi_uyCLhudDOycCg10IfY,49
10
10
  fastapi_voyager/voyager.py,sha256=nioo56oFDeZ8nwwPWDtaQbkpe4pVssFoBVHCWFhs0K4,13549
11
11
  fastapi_voyager/web/graph-ui.js,sha256=9ONPxQHvk4HxYq6KtKc_2VbJmUgd-gh7i3Biv1rkqC4,5734
12
12
  fastapi_voyager/web/graphviz.svg.css,sha256=zDCjjpT0Idufu5YOiZI76PL70-avP3vTyzGPh9M85Do,1563
13
13
  fastapi_voyager/web/graphviz.svg.js,sha256=lvAdbjHc-lMSk4GQp-iqYA2PCFX4RKnW7dFaoe0LUHs,16005
14
- fastapi_voyager/web/index.html,sha256=JgkoMbFTKuufSVVLs9_6mNP2_fDCrQPgTjN3EymBK3Y,19352
14
+ fastapi_voyager/web/index.html,sha256=8cmlwQzE5tonHj_QozdKcr3z-7JFsvE7cjf70dye0y8,19377
15
15
  fastapi_voyager/web/quasar.min.css,sha256=F5jQe7X2XT54VlvAaa2V3GsBFdVD-vxDZeaPLf6U9CU,203145
16
16
  fastapi_voyager/web/quasar.min.js,sha256=h0ftyPMW_CRiyzeVfQqiup0vrVt4_QWojpqmpnpn07E,502974
17
17
  fastapi_voyager/web/vue-main.js,sha256=m6U24ythzjQuAYXUm9BsTdFrApFNqW26B0Bf7TsybqQ,13275
@@ -26,8 +26,8 @@ fastapi_voyager/web/icon/favicon-16x16.png,sha256=JC07jEzfIYxBIoQn_FHXvyHuxESdhW
26
26
  fastapi_voyager/web/icon/favicon-32x32.png,sha256=C7v1h58cfWOsiLp9yOIZtlx-dLasBcq3NqpHVGRmpt4,1859
27
27
  fastapi_voyager/web/icon/favicon.ico,sha256=tZolYIXkkBcFiYl1A8ksaXN2VjGamzcSdes838dLvNc,15406
28
28
  fastapi_voyager/web/icon/site.webmanifest,sha256=ep4Hzh9zhmiZF2At3Fp1dQrYQuYF_3ZPZxc1KcGBvwQ,263
29
- fastapi_voyager-0.12.1.dist-info/METADATA,sha256=huz9XjY9D2KrxDQFgnq1ZJgANwmKZyT0qRRI9btk8uA,6060
30
- fastapi_voyager-0.12.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
- fastapi_voyager-0.12.1.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
32
- fastapi_voyager-0.12.1.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
33
- fastapi_voyager-0.12.1.dist-info/RECORD,,
29
+ fastapi_voyager-0.12.2.dist-info/METADATA,sha256=hXiqtPfKvni9gv4HxyjGdQTQFaDIAGJ69qE4WzsSzus,6059
30
+ fastapi_voyager-0.12.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
+ fastapi_voyager-0.12.2.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
32
+ fastapi_voyager-0.12.2.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
33
+ fastapi_voyager-0.12.2.dist-info/RECORD,,