fastapi-voyager 0.11.2__tar.gz → 0.11.3__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 (49) hide show
  1. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/PKG-INFO +3 -1
  2. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/README.md +2 -0
  3. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/server.py +9 -2
  4. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/type_helper.py +6 -2
  5. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/version.py +1 -1
  6. fastapi_voyager-0.11.3/tests/programatic.py +10 -0
  7. fastapi_voyager-0.11.2/tests/programatic.py +0 -5
  8. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/.gitignore +0 -0
  9. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/.python-version +0 -0
  10. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/LICENSE +0 -0
  11. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/pyproject.toml +0 -0
  12. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/__init__.py +0 -0
  13. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/cli.py +0 -0
  14. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/filter.py +0 -0
  15. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/module.py +0 -0
  16. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/render.py +0 -0
  17. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/type.py +0 -0
  18. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/voyager.py +0 -0
  19. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/component/render-graph.js +0 -0
  20. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/component/route-code-display.js +0 -0
  21. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/component/schema-code-display.js +0 -0
  22. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/component/schema-field-filter.js +0 -0
  23. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/graph-ui.js +0 -0
  24. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/graphviz.svg.css +0 -0
  25. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/graphviz.svg.js +0 -0
  26. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/icon/android-chrome-192x192.png +0 -0
  27. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/icon/android-chrome-512x512.png +0 -0
  28. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/icon/apple-touch-icon.png +0 -0
  29. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/icon/favicon-16x16.png +0 -0
  30. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/icon/favicon-32x32.png +0 -0
  31. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/icon/favicon.ico +0 -0
  32. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/icon/site.webmanifest +0 -0
  33. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/index.html +0 -0
  34. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/quasar.min.css +0 -0
  35. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/quasar.min.js +0 -0
  36. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/src/fastapi_voyager/web/vue-main.js +0 -0
  37. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/__init__.py +0 -0
  38. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/demo.py +0 -0
  39. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/demo_anno.py +0 -0
  40. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/service/__init__.py +0 -0
  41. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/service/schema.py +0 -0
  42. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/test_analysis.py +0 -0
  43. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/test_filter.py +0 -0
  44. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/test_generic.py +0 -0
  45. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/test_import.py +0 -0
  46. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/test_module.py +0 -0
  47. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/tests/test_type_helper.py +0 -0
  48. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/uv.lock +0 -0
  49. {fastapi_voyager-0.11.2 → fastapi_voyager-0.11.3}/voyager.jpg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-voyager
3
- Version: 0.11.2
3
+ Version: 0.11.3
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
@@ -270,6 +270,8 @@ or you can open router_viz.dot with vscode extension `graphviz interactive previ
270
270
  - 0.11.2
271
271
  - [x] enable/disable module cluster (to save space)
272
272
  - 0.11.3
273
+ - [x] support online repo url
274
+ - 0.11.4
273
275
  - [ ] add loading for field detail panel
274
276
  - [ ] logging information
275
277
  - [ ] sort field name
@@ -241,6 +241,8 @@ or you can open router_viz.dot with vscode extension `graphviz interactive previ
241
241
  - 0.11.2
242
242
  - [x] enable/disable module cluster (to save space)
243
243
  - 0.11.3
244
+ - [x] support online repo url
245
+ - 0.11.4
244
246
  - [ ] add loading for field detail panel
245
247
  - [ ] logging information
246
248
  - [ ] sort field name
@@ -41,6 +41,7 @@ def create_route(
41
41
  module_color: dict[str, str] | None = None,
42
42
  swagger_url: Optional[str] = None,
43
43
  module_prefix: Optional[str] = None,
44
+ online_repo_url: Optional[str] = None,
44
45
  ):
45
46
  """
46
47
  module_color: dict mapping module name to color string, e.g. {'models': 'lightblue'}
@@ -183,7 +184,7 @@ def create_route(
183
184
 
184
185
  mod = __import__(module_name, fromlist=[class_name])
185
186
  obj = getattr(mod, class_name)
186
- link = get_vscode_link(obj)
187
+ link = get_vscode_link(obj, online_repo_url=online_repo_url)
187
188
 
188
189
  return JSONResponse(content={"link": link})
189
190
  except ImportError as e:
@@ -211,8 +212,14 @@ def create_voyager(
211
212
  gzip_minimum_size: int | None = 500,
212
213
  module_prefix: Optional[str] = None,
213
214
  swagger_url: Optional[str] = None,
215
+ online_repo_url: Optional[str] = None,
214
216
  ) -> FastAPI:
215
- router = create_route(target_app, module_color=module_color, module_prefix=module_prefix, swagger_url=swagger_url)
217
+ router = create_route(
218
+ target_app,
219
+ module_color=module_color,
220
+ module_prefix=module_prefix,
221
+ swagger_url=swagger_url,
222
+ online_repo_url=online_repo_url)
216
223
 
217
224
  app = FastAPI(title="fastapi-voyager demo server")
218
225
  if gzip_minimum_size is not None and gzip_minimum_size >= 0:
@@ -1,7 +1,7 @@
1
1
  import inspect
2
2
  import os
3
3
  from pydantic import BaseModel
4
- from typing import get_origin, get_args, Union, Annotated, Any, Type, Generic
4
+ from typing import get_origin, get_args, Union, Annotated, Any, Type, Generic, Optional
5
5
  from fastapi_voyager.type import FieldInfo
6
6
  from types import UnionType
7
7
  import pydantic_resolve.constant as const
@@ -182,7 +182,7 @@ def get_pydantic_fields(schema: type[BaseModel], bases_fields: set[str]) -> list
182
182
  return fields
183
183
 
184
184
 
185
- def get_vscode_link(kls):
185
+ def get_vscode_link(kls, online_repo_url: Optional[str] = None) -> str:
186
186
  """Build a VSCode deep link to the class definition.
187
187
 
188
188
  Priority:
@@ -197,6 +197,10 @@ def get_vscode_link(kls):
197
197
  _lines, start_line = inspect.getsourcelines(kls)
198
198
 
199
199
  distro = os.environ.get("WSL_DISTRO_NAME")
200
+ if online_repo_url:
201
+ cwd = os.getcwd()
202
+ relative_path = os.path.relpath(source_file, cwd)
203
+ return f"{online_repo_url}/{relative_path}#L{start_line}"
200
204
  if distro:
201
205
  # Ensure absolute path (it should already be under /) and build remote link
202
206
  return f"vscode://vscode-remote/wsl+{distro}{source_file}:{start_line}"
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.11.2"
2
+ __version__ = "0.11.3"
@@ -0,0 +1,10 @@
1
+ from fastapi_voyager import create_voyager
2
+ from tests.demo import app
3
+
4
+ app.mount(
5
+ '/voyager',
6
+ create_voyager(
7
+ app,
8
+ module_color={"tests.service": "red"},
9
+ module_prefix="tests.service",
10
+ online_repo_url="https://github.com/allmonday/fastapi-voyager/blob/main"))
@@ -1,5 +0,0 @@
1
- from fastapi_voyager import create_voyager
2
- from tests.demo import app
3
-
4
- app.mount('/voyager', create_voyager(app, module_color={"tests.service": "red"}, module_prefix="tests.service", swagger_url='/docs'))
5
- # app.mount('/voyager', create_voyager(app, module_color={"tests.service": "red"}))