fastapi-voyager 0.12.7__py3-none-any.whl → 0.12.9__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.
@@ -2,7 +2,7 @@ import inspect
2
2
  import logging
3
3
  import os
4
4
  from types import UnionType
5
- from typing import Annotated, Any, Generic, Union, get_args, get_origin
5
+ from typing import Annotated, Any, Generic, Union, get_args, get_origin, ForwardRef
6
6
 
7
7
  import pydantic_resolve.constant as const
8
8
  from pydantic import BaseModel
@@ -237,7 +237,11 @@ def safe_issubclass(kls, target_kls):
237
237
  try:
238
238
  return issubclass(kls, target_kls)
239
239
  except TypeError:
240
- logger.debug(f'{kls.__module__}:{kls.__qualname__} is not subclass of {target_kls.__module__}:{target_kls.__qualname__}')
240
+ # if kls is ForwardRef, log it
241
+ if isinstance(kls, ForwardRef):
242
+ logger.error(f'{str(kls)} is a ForwardRef, not a subclass of {target_kls.__module__}:{target_kls.__qualname__}')
243
+ else:
244
+ logger.debug(f'{kls.__module__}:{kls.__qualname__} is not subclass of {target_kls.__module__}:{target_kls.__qualname__}')
241
245
  return False
242
246
 
243
247
 
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.12.7"
2
+ __version__ = "0.12.9"
@@ -55,6 +55,12 @@
55
55
  flex: 1 1 auto;
56
56
  overflow: auto;
57
57
  }
58
+ .tag-bg {
59
+ /* background-color: #287e75; */
60
+ /* border-bottom: 2px solid #009485;
61
+ border-left: 2px solid #009485;
62
+ border-top: 0; */
63
+ }
58
64
 
59
65
  .adjust-fit {
60
66
  height: calc(100vh - 54px);
@@ -107,9 +113,20 @@
107
113
  <span> FastAPI Voyager </span>
108
114
  <span v-if="store.state.version" style="font-size: 12px; margin-left: 8px; font-weight: normal;">{{ store.state.version }}</span>
109
115
  </div>
116
+ <div class="col-auto">
117
+ <q-btn
118
+ style="margin-left: 80px"
119
+ outline
120
+ @click="onReset"
121
+ title="clear tag, route selection"
122
+ icon="open_in_full"
123
+ color="primary"
124
+ flat
125
+ class="q-mx-md"
126
+ />
127
+ </div>
110
128
  <div class="col-auto" style="font-size: 16px">
111
129
  <q-option-group
112
- style="margin-left: 80px"
113
130
  v-model="store.state.filter.showFields"
114
131
  :options="store.state.fieldOptions"
115
132
  @update:model-value="(val) => toggleShowField(val)"
@@ -149,28 +166,11 @@
149
166
  v-model="store.state.search.fieldName"
150
167
  :disable="!store.state.search.schemaName || store.state.search.fieldOptions.length===0"
151
168
  :options="store.state.search.fieldOptions"
169
+ @update:model-value="onSearch"
152
170
  style="min-width: 180px"
153
171
  clearable
154
172
  label="Select field (optional)"
155
173
  ></q-select>
156
- <q-btn
157
- outline
158
- icon="search"
159
- flat
160
- class="q-mr-none"
161
- :disable="!store.state.search.schemaName"
162
- :loading="store.state.generating"
163
- @click="onSearch"
164
- ></q-btn>
165
- <q-btn
166
- outline
167
- @click="onReset"
168
- dense
169
- title="full graph"
170
- icon="border_all"
171
- flat
172
- class="q-mr-sm"
173
- />
174
174
  </div>
175
175
  <div class="col-auto">
176
176
  <q-btn
@@ -179,7 +179,7 @@
179
179
  flat
180
180
  icon="help_outline"
181
181
  aria-label="Help"
182
- style="margin-right: 40px"
182
+ style="margin-right: 50px; margin-left: 20px"
183
183
  >
184
184
  <q-tooltip
185
185
  anchor="bottom middle"
@@ -272,7 +272,8 @@
272
272
  expand-separator
273
273
  :model-value="store.state.leftPanel._tag === tag.name || store.state.search.mode"
274
274
  @update:model-value="(val) => toggleTag(tag.name, val)"
275
- :header-class="store.state.leftPanel.tag === tag.name ? 'text-primary text-bold' : ''"
275
+ @click="() => toggleTag(tag.name, true)"
276
+ :header-class="store.state.leftPanel.tag === tag.name ? 'text-primary text-bold tag-bg' : 'tag-bg'"
276
277
  content-class="q-pa-none"
277
278
  >
278
279
  <template #header>
@@ -64,6 +64,7 @@ const app = createApp({
64
64
  function onSearchSchemaChange(val) {
65
65
  store.state.search.schemaName = val;
66
66
  store.state.search.mode = false;
67
+ onSearch()
67
68
  }
68
69
 
69
70
  function readQuerySelection() {
@@ -134,15 +135,18 @@ const app = createApp({
134
135
  store.state.leftPanel.tag = null;
135
136
  store.state.leftPanel._tag = null;
136
137
  store.state.leftPanel.routeId = null;
138
+ syncSelectionToUrl()
137
139
  await loadSearchedTags();
138
140
  renderBasedOnInitialPolicy()
139
141
  }
140
142
 
141
143
  async function onSearch() {
144
+ console.log('start search')
142
145
  store.state.search.mode = true;
143
146
  store.state.leftPanel.tag = null;
144
147
  store.state.leftPanel._tag = null;
145
148
  store.state.leftPanel.routeId = null;
149
+ syncSelectionToUrl()
146
150
  await loadSearchedTags();
147
151
  await onGenerate();
148
152
  }
@@ -203,9 +207,10 @@ const app = createApp({
203
207
  syncSelectionToUrl();
204
208
  onGenerate();
205
209
  return;
210
+ } else {
211
+ store.state.config.initial_page_policy = data.initial_page_policy
212
+ renderBasedOnInitialPolicy()
206
213
  }
207
- store.state.config.initial_page_policy = data.initial_page_policy
208
- renderBasedOnInitialPolicy()
209
214
 
210
215
  // default route options placeholder
211
216
  } catch (e) {
@@ -228,6 +233,7 @@ const app = createApp({
228
233
  ? store.state.leftPanel.tags[0].name
229
234
  : null;
230
235
  store.state.leftPanel._tag = store.state.leftPanel.tag;
236
+ syncSelectionToUrl()
231
237
  onGenerate();
232
238
  return;
233
239
  }
@@ -300,20 +306,11 @@ const app = createApp({
300
306
  }
301
307
 
302
308
  async function onReset() {
303
- store.state.leftPanel.tag = null;
304
- store.state.leftPanel._tag = null;
305
- store.state.leftPanel.routeId = null;
306
-
307
- store.state.graph.schemaId = null;
308
-
309
- store.state.search.mode = false;
310
- store.state.search.schemaName = null;
311
- store.state.search.fieldName = null;
312
- store.state.search.fieldOptions = [];
313
- store.state.search.schemaOptions = allSchemaOptions.value.slice();
314
-
315
- store.state.schemaDetail.schemaCodeName = "";
316
- resetSearch()
309
+ store.state.leftPanel.tag = null;
310
+ store.state.leftPanel._tag = null;
311
+ store.state.leftPanel.routeId = null;
312
+ syncSelectionToUrl()
313
+ onGenerate()
317
314
  }
318
315
 
319
316
  function toggleTag(tagName, expanded = null) {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-voyager
3
- Version: 0.12.7
3
+ Version: 0.12.9
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
@@ -5,17 +5,17 @@ fastapi_voyager/module.py,sha256=h9YR3BpS-CAcJW9WCdVkF4opqwY32w9T67g9GfdLytk,342
5
5
  fastapi_voyager/render.py,sha256=7jSChISqTV2agaO55thhwyrOhqVOMux4x7k8rSQROnU,9960
6
6
  fastapi_voyager/server.py,sha256=wwCFl1eeq_jn8nfIwcy7s8Sh6MB55SN8u9AsJRnkFWQ,7979
7
7
  fastapi_voyager/type.py,sha256=7EL1zaIwKVRGpLig7fqaOrZGN5k0Rm31C9COfck3CSs,1750
8
- fastapi_voyager/type_helper.py,sha256=JXD_OE_xTARkGjWDsnO_xfvyZ0vcwViYyqCp6oEHBTM,9719
9
- fastapi_voyager/version.py,sha256=z8XZy0W66ufD2jmi9zvVlH2vjRJoy4CC-ZR7EhfBej8,49
8
+ fastapi_voyager/type_helper.py,sha256=UTCFWluFeGdGkJX3wiE_bZ2EgZsu4JkmqHjsJVdG81Q,9953
9
+ fastapi_voyager/version.py,sha256=zqg8eyYmMv7qmhNprlm0Gp1wy1_Md8MuU6RGjhIE1LQ,49
10
10
  fastapi_voyager/voyager.py,sha256=qJZvkLh5W_18X5B4pJ8XYbytx2Wvcz-0OnYoHWw8XlA,14046
11
11
  fastapi_voyager/web/graph-ui.js,sha256=wxKjmVEpaMJZXMTW7tJ4BiaACCI1oVN6cx7hSMI0K5U,6428
12
12
  fastapi_voyager/web/graphviz.svg.css,sha256=zDCjjpT0Idufu5YOiZI76PL70-avP3vTyzGPh9M85Do,1563
13
13
  fastapi_voyager/web/graphviz.svg.js,sha256=wZwz_lBztoXmujEN21P0w-HMpdmbqPwTQQ6Ebxd9rGo,18569
14
- fastapi_voyager/web/index.html,sha256=L2xt6T-b4V6WnYnZ_MkmduDQLzFPxfRLhHuiaG9QnGU,18362
14
+ fastapi_voyager/web/index.html,sha256=gF73eTnh5M2PcjWFOsDzqvCQBdl4KpaZW28hjS0iJnM,18454
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/store.js,sha256=ul6I00XqT9FByAD20JgO2mzdbYCZhTI-CP5t0g_k6yo,1776
18
- fastapi_voyager/web/vue-main.js,sha256=LoMVDcU4KSTw3mcquI3g3xJT8ChcQtiyC1rGV79tpUA,14208
18
+ fastapi_voyager/web/vue-main.js,sha256=_yxkrWqxNIUMc3LMBi0TxT5SnDlV-_0n9tPaJdlwiFg,14064
19
19
  fastapi_voyager/web/component/demo.js,sha256=bQb16Un4XZ3Mf8qL6gvyrXe_mmA3V3mSIRMQAWg2MNk,352
20
20
  fastapi_voyager/web/component/render-graph.js,sha256=e8Xgh2Kl-nYU0P1gstEmAepCgFnk2J6UdxW8TlMafGs,2322
21
21
  fastapi_voyager/web/component/route-code-display.js,sha256=8NJPPjNRUC21gjpY8XYEQs4RBbhX1pCiqEhJp39ku6k,3678
@@ -27,8 +27,8 @@ fastapi_voyager/web/icon/favicon-16x16.png,sha256=JC07jEzfIYxBIoQn_FHXvyHuxESdhW
27
27
  fastapi_voyager/web/icon/favicon-32x32.png,sha256=C7v1h58cfWOsiLp9yOIZtlx-dLasBcq3NqpHVGRmpt4,1859
28
28
  fastapi_voyager/web/icon/favicon.ico,sha256=tZolYIXkkBcFiYl1A8ksaXN2VjGamzcSdes838dLvNc,15406
29
29
  fastapi_voyager/web/icon/site.webmanifest,sha256=ep4Hzh9zhmiZF2At3Fp1dQrYQuYF_3ZPZxc1KcGBvwQ,263
30
- fastapi_voyager-0.12.7.dist-info/METADATA,sha256=ZsBh0iYCI0KSjBlTW_WQuwBglfwNHpSIrjZee3u4eUg,6523
31
- fastapi_voyager-0.12.7.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
32
- fastapi_voyager-0.12.7.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
33
- fastapi_voyager-0.12.7.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
34
- fastapi_voyager-0.12.7.dist-info/RECORD,,
30
+ fastapi_voyager-0.12.9.dist-info/METADATA,sha256=mwXk2O8gEasBEpci6RZagsLQ7rUGk7tRPvLfb-Q7bUg,6523
31
+ fastapi_voyager-0.12.9.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
32
+ fastapi_voyager-0.12.9.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
33
+ fastapi_voyager-0.12.9.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
34
+ fastapi_voyager-0.12.9.dist-info/RECORD,,