fastapi-voyager 0.14.0__tar.gz → 0.14.1__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 (62) hide show
  1. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/PKG-INFO +8 -2
  2. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/README.md +7 -1
  3. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/docs/changelog.md +3 -0
  4. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/version.py +1 -1
  5. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/graph-ui.js +0 -5
  6. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/index.html +12 -1
  7. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/store.js +1 -0
  8. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/vue-main.js +7 -0
  9. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  10. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  11. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/.github/workflows/publish.yml +0 -0
  12. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/.gitignore +0 -0
  13. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/.python-version +0 -0
  14. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/CONTRIBUTING.md +0 -0
  15. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/LICENSE +0 -0
  16. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/docs/idea.md +0 -0
  17. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/pyproject.toml +0 -0
  18. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/release.md +0 -0
  19. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/__init__.py +0 -0
  20. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/cli.py +0 -0
  21. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/er_diagram.py +0 -0
  22. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/filter.py +0 -0
  23. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/module.py +0 -0
  24. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/pydantic_resolve_util.py +0 -0
  25. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/render.py +0 -0
  26. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/server.py +0 -0
  27. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/type.py +0 -0
  28. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/type_helper.py +0 -0
  29. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/voyager.py +0 -0
  30. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/component/demo.js +0 -0
  31. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/component/render-graph.js +0 -0
  32. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/component/route-code-display.js +0 -0
  33. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/component/schema-code-display.js +0 -0
  34. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/graphviz.svg.css +0 -0
  35. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/graphviz.svg.js +0 -0
  36. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/icon/android-chrome-192x192.png +0 -0
  37. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/icon/android-chrome-512x512.png +0 -0
  38. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/icon/apple-touch-icon.png +0 -0
  39. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/icon/favicon-16x16.png +0 -0
  40. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/icon/favicon-32x32.png +0 -0
  41. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/icon/favicon.ico +0 -0
  42. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/icon/site.webmanifest +0 -0
  43. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/quasar.min.css +0 -0
  44. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/src/fastapi_voyager/web/quasar.min.js +0 -0
  45. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/__init__.py +0 -0
  46. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/demo.py +0 -0
  47. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/demo_anno.py +0 -0
  48. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/programatic.py +0 -0
  49. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/service/__init__.py +0 -0
  50. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/service/schema/__init__.py +0 -0
  51. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/service/schema/base_entity.py +0 -0
  52. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/service/schema/extra.py +0 -0
  53. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/service/schema/schema.py +0 -0
  54. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/test_analysis.py +0 -0
  55. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/test_filter.py +0 -0
  56. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/test_generic.py +0 -0
  57. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/test_import.py +0 -0
  58. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/test_module.py +0 -0
  59. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/test_resolve_util_impl.py +0 -0
  60. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/tests/test_type_helper.py +0 -0
  61. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/uv.lock +0 -0
  62. {fastapi_voyager-0.14.0 → fastapi_voyager-0.14.1}/voyager.jpg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-voyager
3
- Version: 0.14.0
3
+ Version: 0.14.1
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
@@ -53,7 +53,8 @@ app.mount('/voyager',
53
53
  swagger_url="/docs",
54
54
  ga_id="G-XXXXXXXXVL",
55
55
  initial_page_policy='first',
56
- online_repo_url='https://github.com/allmonday/composition-oriented-development-pattern/blob/master'))
56
+ online_repo_url='https://github.com/allmonday/composition-oriented-development-pattern/blob/master',
57
+ enable_pydantic_resolve_meta=True))
57
58
  ```
58
59
 
59
60
  https://github.com/allmonday/composition-oriented-development-pattern/blob/master/src/main.py#L48
@@ -158,6 +159,11 @@ app.mount('/voyager',
158
159
 
159
160
  <img width="1276" height="613" alt="image" src="https://github.com/user-attachments/assets/ea0091bb-ee11-4f71-8be3-7129d956c910" />
160
161
 
162
+ ### Show pydantic resolve meta info
163
+
164
+ setting `enable_pydantic_resolve_meta=True` in `create_voyager`, toggle `pydantic resolve meta`.
165
+
166
+ <img width="1604" height="535" alt="image" src="https://github.com/user-attachments/assets/d1639555-af41-4a08-9970-4b8ef314596a" />
161
167
 
162
168
 
163
169
  ## Command Line Usage
@@ -25,7 +25,8 @@ app.mount('/voyager',
25
25
  swagger_url="/docs",
26
26
  ga_id="G-XXXXXXXXVL",
27
27
  initial_page_policy='first',
28
- online_repo_url='https://github.com/allmonday/composition-oriented-development-pattern/blob/master'))
28
+ online_repo_url='https://github.com/allmonday/composition-oriented-development-pattern/blob/master',
29
+ enable_pydantic_resolve_meta=True))
29
30
  ```
30
31
 
31
32
  https://github.com/allmonday/composition-oriented-development-pattern/blob/master/src/main.py#L48
@@ -130,6 +131,11 @@ app.mount('/voyager',
130
131
 
131
132
  <img width="1276" height="613" alt="image" src="https://github.com/user-attachments/assets/ea0091bb-ee11-4f71-8be3-7129d956c910" />
132
133
 
134
+ ### Show pydantic resolve meta info
135
+
136
+ setting `enable_pydantic_resolve_meta=True` in `create_voyager`, toggle `pydantic resolve meta`.
137
+
138
+ <img width="1604" height="535" alt="image" src="https://github.com/user-attachments/assets/d1639555-af41-4a08-9970-4b8ef314596a" />
133
139
 
134
140
 
135
141
  ## Command Line Usage
@@ -149,9 +149,12 @@
149
149
  - 0.14.0
150
150
  - [x] show hint for resolve (>), post fields (<), post default handler (* at title)
151
151
  - [x] show expose and collect info
152
+ - 0.14.1
153
+ - [x] minor ui enhancement
152
154
 
153
155
  ## 0.15, internal refactor
154
156
  - 0.15.0
157
+ - [ ] left panel can be toggled.
155
158
  - [ ] refactor vue-main.js, move methods to store
156
159
  - [ ] refactor render.py
157
160
  - [ ] add tests
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.14.0"
2
+ __version__ = "0.14.1"
@@ -151,11 +151,6 @@ export class GraphUI {
151
151
  } else {
152
152
  self.currentSelection = [obj];
153
153
  self._highlight();
154
- try {
155
- self.options.resetCb();
156
- } catch (e) {
157
- console.warn("resetCb callback failed", e);
158
- }
159
154
  }
160
155
  });
161
156
 
@@ -62,6 +62,15 @@
62
62
  border-top: 0; */
63
63
  }
64
64
 
65
+ .inherit-flow {
66
+ /* stroke-width:2; */
67
+ stroke-dasharray: 8 6; /* dash pattern */
68
+ stroke-linecap: round;
69
+ animation: dash 2s linear infinite;
70
+ animation-direction: reverse;
71
+ }
72
+ @keyframes dash { to { stroke-dashoffset: -14; } }
73
+
65
74
  .adjust-fit {
66
75
  height: calc(100vh - 54px);
67
76
  }
@@ -140,6 +149,7 @@
140
149
  </div>
141
150
  <div class="col-auto row items-center q-gutter-sm">
142
151
  <q-select
152
+ v-show="!store.state.search.invisible"
143
153
  dense
144
154
  outlined
145
155
  use-input
@@ -170,6 +180,7 @@
170
180
  </q-select>
171
181
 
172
182
  <q-select
183
+ v-show="!store.state.search.invisible"
173
184
  dense
174
185
  outlined
175
186
  v-model="store.state.search.fieldName"
@@ -380,7 +391,7 @@
380
391
  title="show module cluster"
381
392
  />
382
393
  </div>
383
- <div class="q-mt-sm" v-if="store.state.config.enable_pydantic_resolve_meta">
394
+ <div class="q-mt-sm" v-if="store.state.mode == 'voyager' && store.state.config.enable_pydantic_resolve_meta">
384
395
  <q-toggle
385
396
  v-model="store.state.modeControl.pydanticResolveMetaEnabled"
386
397
  @update:model-value="(val) => togglePydanticResolveMeta(val)"
@@ -56,6 +56,7 @@ const state = reactive({
56
56
  // schema options, schema, fields
57
57
  search: {
58
58
  mode: false,
59
+ invisible: false,
59
60
  schemaName: null,
60
61
  fieldName: null,
61
62
  schemaOptions: [],
@@ -380,12 +380,19 @@ const app = createApp({
380
380
 
381
381
  async function onModeChange(val) {
382
382
  if (val === "er-diagram") {
383
+ // clear search
384
+ store.state.search.schemaName = null
385
+ store.state.search.fieldName = null
386
+ store.state.search.invisible = true
387
+
383
388
  if (store.state.leftPanel.width > 0) {
384
389
  store.state.leftPanel.previousWidth = store.state.leftPanel.width;
385
390
  }
386
391
  store.state.leftPanel.width = 0;
387
392
  await renderErDiagram();
388
393
  } else {
394
+ store.state.search.invisible = false
395
+
389
396
  const fallbackWidth = store.state.leftPanel.previousWidth || 300;
390
397
  store.state.leftPanel.width = fallbackWidth;
391
398
  await onGenerate();