fastapi-voyager 0.7.3__py3-none-any.whl → 0.7.5__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.
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.7.3"
2
+ __version__ = "0.7.5"
@@ -5,10 +5,28 @@
5
5
  <link rel="stylesheet" href="fastapi-voyager-static/graphviz.svg.css" />
6
6
  <link rel="stylesheet" href="fastapi-voyager-static/quasar.min.css" />
7
7
  <!-- App Icons / Favicons -->
8
- <link rel="apple-touch-icon" sizes="180x180" href="fastapi-voyager-static/icon/apple-touch-icon.png" />
9
- <link rel="icon" type="image/png" sizes="32x32" href="fastapi-voyager-static/icon/favicon-32x32.png" />
10
- <link rel="icon" type="image/png" sizes="16x16" href="fastapi-voyager-static/icon/favicon-16x16.png" />
11
- <link rel="icon" href="fastapi-voyager-static/icon/favicon.ico" sizes="any" />
8
+ <link
9
+ rel="apple-touch-icon"
10
+ sizes="180x180"
11
+ href="fastapi-voyager-static/icon/apple-touch-icon.png"
12
+ />
13
+ <link
14
+ rel="icon"
15
+ type="image/png"
16
+ sizes="32x32"
17
+ href="fastapi-voyager-static/icon/favicon-32x32.png"
18
+ />
19
+ <link
20
+ rel="icon"
21
+ type="image/png"
22
+ sizes="16x16"
23
+ href="fastapi-voyager-static/icon/favicon-16x16.png"
24
+ />
25
+ <link
26
+ rel="icon"
27
+ href="fastapi-voyager-static/icon/favicon.ico"
28
+ sizes="any"
29
+ />
12
30
  <link rel="manifest" href="fastapi-voyager-static/icon/site.webmanifest" />
13
31
  <link
14
32
  href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
@@ -40,62 +58,36 @@
40
58
  </style>
41
59
  <body>
42
60
  <div id="q-app" class="column" style="height: 100%">
43
- <div v-if="state.initializing" style="position:fixed; inset:0; display:flex; align-items:center; justify-content:center; z-index:2000; background:rgba(255,255,255,0.85); font-size:18px; font-family:Roboto, sans-serif; color:#444;">
44
- <div style="text-align:center;">
61
+ <div
62
+ v-if="state.initializing"
63
+ style="
64
+ position: fixed;
65
+ inset: 0;
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ z-index: 2000;
70
+ background: rgba(255, 255, 255, 0.85);
71
+ font-size: 18px;
72
+ font-family: Roboto, sans-serif;
73
+ color: #444;
74
+ "
75
+ >
76
+ <div style="text-align: center">
45
77
  <div class="q-mb-sm">Initializing...</div>
46
78
  <q-spinner color="primary" size="32px" />
47
79
  </div>
48
80
  </div>
49
81
  <div
50
82
  style="
51
- padding-top: 8px;
52
- padding-left: 8px;
53
- padding-bottom: 8px;
54
- position: absolute;
55
- width: 100%;
56
- top: 0;
83
+ padding: 8px;
57
84
  background-color: #fff;
58
- z-index: 1;
59
85
  border-bottom: 1px solid #ccc;
60
86
  color: #211d1d;
87
+ flex: 0 0 auto;
61
88
  "
62
89
  >
63
90
  <div class="row items-center q-col-gutter-md">
64
- <div class="col-auto">
65
- <q-select
66
- v-model="state.tag"
67
- :options="state.tagOptions"
68
- use-input
69
- input-debounce="0"
70
- behavior="menu"
71
- dense
72
- outlined
73
- style="min-width: 320px"
74
- popup-content-class="select-popup"
75
- clearable
76
- label="Tags"
77
- @filter="onFilterTags"
78
- />
79
- </div>
80
-
81
- <div class="col-auto">
82
- <q-select
83
- v-model="state.routeId"
84
- :options="state.routeOptions"
85
- option-label="label"
86
- option-value="value"
87
- emit-value
88
- map-options
89
- dense
90
- outlined
91
- style="min-width: 320px"
92
- popup-content-class="select-popup"
93
- clearable
94
- placeholder="All routes"
95
- label="Routes"
96
- />
97
- </div>
98
-
99
91
  <div class="col-auto">
100
92
  <div class="column">
101
93
  <q-option-group
@@ -110,14 +102,10 @@
110
102
  </div>
111
103
 
112
104
  <div class="col-auto">
113
- <q-checkbox
114
- v-model="state.brief"
115
- label="Brief"
116
- dense
117
- />
105
+ <q-toggle v-model="state.brief" label="Brief" dense />
118
106
  </div>
119
-
120
- <div class="col-auto">
107
+
108
+ <!-- <div class="col-auto">
121
109
  <q-btn-dropdown
122
110
  class="q-ml-md"
123
111
  split
@@ -135,17 +123,13 @@
135
123
  </q-item>
136
124
  </q-list>
137
125
  </q-btn-dropdown>
126
+ </div> -->
127
+
128
+ <div class="col-auto q-ml-auto">
129
+ <q-btn outline @click="onReset" title="may be very slow" label="Show All" />
138
130
  </div>
139
131
  <div class="col-auto">
140
- <q-btn flat @click="onReset" label="Reset" />
141
- </div>
142
- <div class="col-auto q-ml-auto">
143
- <q-btn
144
- outline
145
- icon="search"
146
- label="Search"
147
- @click="showDialog()"
148
- />
132
+ <q-btn outline icon="search" label="Search" @click="showDialog()" />
149
133
  </div>
150
134
  <div class="col-auto">
151
135
  <q-btn
@@ -183,6 +167,58 @@
183
167
  </div>
184
168
  </div>
185
169
  </div>
170
+ <div class="row no-wrap" style="flex: 1 1 auto; min-height: 0; height: 100px;">
171
+ <div
172
+ class="column no-wrap"
173
+ :style="{
174
+ minWidth: '300px',
175
+ width: '300px',
176
+ borderRight: '1px solid #e0e0e0',
177
+ backgroundColor: '#fff',
178
+ minHeight: 0,
179
+ }"
180
+ >
181
+ <q-scroll-area class="fit">
182
+ <q-list dense separator>
183
+ <q-expansion-item
184
+ v-for="tag in state.rawTags"
185
+ :key="tag.name"
186
+ expand-separator
187
+ switch-toggle-side
188
+ :model-value="state.tag === tag.name"
189
+ @update:model-value="(val) => toggleTag(tag.name, val)"
190
+ :header-class="state.tag === tag.name ? 'bg-primary text-white text-weight-medium' : 'text-weight-medium'"
191
+ content-class="q-pa-none"
192
+ >
193
+ <template #header>
194
+ <div class="row items-center no-wrap" style="width: 100%">
195
+ <div class="col text-body2">{{ tag.name }}</div>
196
+ </div>
197
+ </template>
198
+
199
+ <q-list separator>
200
+ <q-item
201
+ v-for="route in (tag.routes || [])"
202
+ :key="route.id"
203
+ clickable
204
+ v-ripple
205
+ :active="state.routeId === route.id"
206
+ active-class=""
207
+ @click="selectRoute(route.id)"
208
+ >
209
+ <q-item-section>{{ route.name }}</q-item-section>
210
+ </q-item>
211
+ <q-item v-if="!tag.routes || tag.routes.length === 0" dense>
212
+ <q-item-section class="text-grey-6">No routes</q-item-section>
213
+ </q-item>
214
+ </q-list>
215
+ </q-expansion-item>
216
+ </q-list>
217
+ </q-scroll-area>
218
+ </div>
219
+ <div id="graph"></div>
220
+ </div>
221
+
186
222
  <!-- Detail Dialog -->
187
223
  <q-dialog v-model="showDetail" :persistent="true" :maximized="true">
188
224
  <detail-dialog
@@ -199,88 +235,147 @@
199
235
  :persistent="true"
200
236
  :maximized="true"
201
237
  >
202
- <schema-field-filter
203
- :schemas="state.rawSchemasFull"
204
- :schema-name="schemaFieldFilterSchema" @close="showSchemaFieldFilter = false" />
238
+ <schema-field-filter
239
+ :schemas="state.rawSchemasFull"
240
+ :schema-name="schemaFieldFilterSchema"
241
+ @close="showSchemaFieldFilter = false"
242
+ />
205
243
  </q-dialog>
206
244
 
207
245
  <!-- Schema Source Code Dialog (Ctrl + Click) -->
208
- <q-dialog v-model="showSchemaCode" :maximized="true" :persistent="false" position="left" :seamless="false">
209
- <schema-code-display
210
- :schema-name="schemaCodeName"
211
- :model-value="showSchemaCode"
246
+ <q-dialog
247
+ v-model="showSchemaCode"
248
+ :maximized="true"
249
+ :persistent="false"
250
+ position="left"
251
+ :seamless="false"
252
+ >
253
+ <schema-code-display
254
+ :schema-name="schemaCodeName"
255
+ :model-value="showSchemaCode"
212
256
  :schemas="state.rawSchemasFull"
213
- @close="showSchemaCode = false" />
257
+ @close="showSchemaCode = false"
258
+ />
214
259
  </q-dialog>
215
260
 
216
261
  <!-- Route Source Code Dialog (Alt + Click on route) -->
217
- <q-dialog v-model="showRouteCode" :maximized="true" :persistent="false" position="right" :seamless="false">
218
- <route-code-display
219
- :route-id="routeCodeId"
220
- :model-value="showRouteCode"
262
+ <q-dialog
263
+ v-model="showRouteCode"
264
+ :maximized="true"
265
+ :persistent="false"
266
+ position="right"
267
+ :seamless="false"
268
+ >
269
+ <route-code-display
270
+ :route-id="routeCodeId"
271
+ :model-value="showRouteCode"
221
272
  :routes="state.routeItems"
222
- @close="showRouteCode = false" />
273
+ @close="showRouteCode = false"
274
+ />
223
275
  </q-dialog>
224
276
 
225
277
  <!-- Dump Core Data Dialog -->
226
278
  <q-dialog v-model="showDumpDialog" :maximized="true" :persistent="false">
227
- <div style="height:100%; position:relative; background:#fff;">
279
+ <div style="height: 100%; position: relative; background: #fff">
228
280
  <q-btn
229
- flat dense round icon="content_copy"
281
+ flat
282
+ dense
283
+ round
284
+ icon="content_copy"
230
285
  aria-label="Copy"
231
286
  @click="copyDumpJson"
232
- style="position:absolute; top:6px; right:62px; z-index:11; background:rgba(255,255,255,0.85);"
287
+ style="
288
+ position: absolute;
289
+ top: 6px;
290
+ right: 62px;
291
+ z-index: 11;
292
+ background: rgba(255, 255, 255, 0.85);
293
+ "
233
294
  ></q-btn>
234
295
  <q-btn
235
- flat dense round icon="close"
296
+ flat
297
+ dense
298
+ round
299
+ icon="close"
236
300
  aria-label="Close"
237
301
  @click="showDumpDialog = false"
238
- style="position:absolute; top:6px; right:6px; z-index:11; background:rgba(255,255,255,0.85);"
302
+ style="
303
+ position: absolute;
304
+ top: 6px;
305
+ right: 6px;
306
+ z-index: 11;
307
+ background: rgba(255, 255, 255, 0.85);
308
+ "
239
309
  ></q-btn>
240
310
  <div>
241
- <pre style="padding:20px; overflow: auto;"><code>{{ dumpJson }}</code></pre>
311
+ <pre
312
+ style="padding: 20px; overflow: auto"
313
+ ><code>{{ dumpJson }}</code></pre>
242
314
  </div>
243
315
  </div>
244
316
  </q-dialog>
245
317
 
246
318
  <!-- Import Core Data Dialog -->
247
319
  <q-dialog v-model="showImportDialog" :persistent="true">
248
- <q-card style="min-width:70vw; max-width:90vw;">
320
+ <q-card style="min-width: 70vw; max-width: 90vw">
249
321
  <q-card-section class="text-h6">Import core data JSON</q-card-section>
250
- <q-card-section >
322
+ <q-card-section>
251
323
  <q-btn color="primary" label="Render" @click="onImportConfirm" />
252
324
  </q-card-section>
253
325
  <q-card-section>
254
- <q-input v-model="importJsonText" type="textarea" autogrow filled label="Paste JSON here" />
326
+ <q-input
327
+ v-model="importJsonText"
328
+ type="textarea"
329
+ autogrow
330
+ filled
331
+ label="Paste JSON here"
332
+ />
255
333
  </q-card-section>
256
334
  </q-card>
257
335
  </q-dialog>
258
336
 
259
337
  <!-- Render Graph Dialog (from imported core data) -->
260
338
  <q-dialog v-model="showRenderGraph" :maximized="true" :persistent="false">
261
- <render-graph :core-data="renderCoreData" @close="showRenderGraph = false" />
339
+ <render-graph
340
+ :core-data="renderCoreData"
341
+ @close="showRenderGraph = false"
342
+ />
262
343
  </q-dialog>
263
-
264
- <div id="graph" style="width: 100%; flex: 1 1 auto; overflow: auto"></div>
265
344
  </div>
266
345
 
267
- <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js" ></script>
268
- <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js" integrity="sha512-vc58qvvBdrDR4etbxMdlTt4GBQk1qjvyORR2nrsPsFPyrs+/u5c3+1Ct6upOgdZoIl7eq6k3a1UPDSNAQi/32A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
346
+ <script
347
+ type="text/javascript"
348
+ src="https://code.jquery.com/jquery-2.1.3.min.js"
349
+ ></script>
350
+ <script
351
+ src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js"
352
+ integrity="sha512-vc58qvvBdrDR4etbxMdlTt4GBQk1qjvyORR2nrsPsFPyrs+/u5c3+1Ct6upOgdZoIl7eq6k3a1UPDSNAQi/32A=="
353
+ crossorigin="anonymous"
354
+ referrerpolicy="no-referrer"
355
+ ></script>
269
356
  <script src="https://unpkg.com/@hpcc-js/wasm@2.20.0/dist/graphviz.umd.js"></script>
270
357
  <script src="https://unpkg.com/d3-graphviz@5.6.0/build/d3-graphviz.js"></script>
271
358
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"></script>
272
359
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-color/2.1.2/jquery.color.min.js"></script>
273
360
 
274
361
  <!-- Add the following at the end of your body tag -->
275
- <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.5.22/vue.global.prod.min.js" integrity="sha512-Y9sKU0AwzWRxKSLd2i35LuDpUdHY/E9tJrKG0mxw0qYQ75VVgGYazIUQPwKhFK9vGO3jIgAtxLiSq8GQ7PDfUg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
362
+ <script
363
+ src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.5.22/vue.global.prod.min.js"
364
+ integrity="sha512-Y9sKU0AwzWRxKSLd2i35LuDpUdHY/E9tJrKG0mxw0qYQ75VVgGYazIUQPwKhFK9vGO3jIgAtxLiSq8GQ7PDfUg=="
365
+ crossorigin="anonymous"
366
+ referrerpolicy="no-referrer"
367
+ ></script>
276
368
  <script src="fastapi-voyager-static/quasar.min.js"></script>
277
369
  <script src="fastapi-voyager-static/graphviz.svg.js"></script>
278
370
  <!-- highlight.js minimal ES module load (python only) -->
279
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css" />
371
+ <link
372
+ rel="stylesheet"
373
+ href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css"
374
+ />
280
375
  <script type="module">
281
- import hljs from 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/highlight.min.js';
282
- import python from 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/languages/python.min.js';
283
- hljs.registerLanguage('python', python);
376
+ import hljs from "https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/highlight.min.js";
377
+ import python from "https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/languages/python.min.js";
378
+ hljs.registerLanguage("python", python);
284
379
  window.hljs = hljs;
285
380
  </script>
286
381
  <script type="module" src="fastapi-voyager-static/vue-main.js"></script>
@@ -51,6 +51,8 @@ const app = createApp({
51
51
  showDetail.value = false;
52
52
  }
53
53
 
54
+ const skipNextRouteGenerate = ref(false);
55
+
54
56
  function applyRoutesForTag(tagName) {
55
57
  const tag = state.rawTags.find((t) => t.name === tagName);
56
58
  state.routeOptions = [];
@@ -59,6 +61,7 @@ const app = createApp({
59
61
  ...tag.routes.map((r) => ({ label: r.name, value: r.id }))
60
62
  );
61
63
  }
64
+ skipNextRouteGenerate.value = true;
62
65
  state.routeId = "";
63
66
  }
64
67
 
@@ -242,7 +245,19 @@ const app = createApp({
242
245
  state.schemaFullname = null;
243
246
  state.showFields = "object";
244
247
  state.brief = false;
245
- await loadInitial();
248
+ onGenerate()
249
+ // await loadInitial();
250
+ }
251
+
252
+ function toggleTag(tagName, expanded = null) {
253
+ if (expanded === true) {
254
+ state.tag = tagName;
255
+ return;
256
+ }
257
+ }
258
+
259
+ function selectRoute(routeId) {
260
+ state.routeId = state.routeId === routeId ? "" : routeId;
246
261
  }
247
262
 
248
263
  // react to tag changes to rebuild routes
@@ -250,6 +265,40 @@ const app = createApp({
250
265
  () => state.tag,
251
266
  (val) => {
252
267
  applyRoutesForTag(val);
268
+ if (!state.initializing) {
269
+ onGenerate();
270
+ }
271
+ }
272
+ );
273
+
274
+ watch(
275
+ () => state.routeId,
276
+ () => {
277
+ if (skipNextRouteGenerate.value) {
278
+ skipNextRouteGenerate.value = false;
279
+ return;
280
+ }
281
+ if (!state.initializing) {
282
+ onGenerate();
283
+ }
284
+ }
285
+ );
286
+
287
+ watch(
288
+ () => state.showFields,
289
+ () => {
290
+ if (!state.initializing) {
291
+ onGenerate();
292
+ }
293
+ }
294
+ )
295
+
296
+ watch(
297
+ () => state.brief,
298
+ () => {
299
+ if (!state.initializing) {
300
+ onGenerate();
301
+ }
253
302
  }
254
303
  );
255
304
 
@@ -259,6 +308,8 @@ const app = createApp({
259
308
 
260
309
  return {
261
310
  state,
311
+ toggleTag,
312
+ selectRoute,
262
313
  onFilterTags,
263
314
  onFilterSchemas,
264
315
  onGenerate,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-voyager
3
- Version: 0.7.3
3
+ Version: 0.7.5
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
@@ -204,6 +204,11 @@ TODO: ...
204
204
  ## Changelog
205
205
 
206
206
  - 0.7:
207
+ - 0.7.5
208
+ - fix show all display issue
209
+ - 0.7.4
210
+ - optimize tag/route, move to left.
211
+ - fresh on change, no need to click generate any more.
207
212
  - 0.7.3
208
213
  - fix `module_color` failure
209
214
  - 0.7.2
@@ -6,15 +6,15 @@ fastapi_voyager/render.py,sha256=rOJEKqiIAPowa3kZheRIgZMnbNzHQz9QoJM5aWUfXXs,774
6
6
  fastapi_voyager/server.py,sha256=UT-fHggdqicIo5m3uUX86-XFhAVDLXpXBsBQwd1HdIg,4001
7
7
  fastapi_voyager/type.py,sha256=nad4WNxTcZFi7Mskw6p2W7v2Gs4f0giVLNoFjZlKmbA,1778
8
8
  fastapi_voyager/type_helper.py,sha256=f2Gy5r3Zi6a2wTkbqU9W-AkvcetajEYCfroACzcIcVY,9064
9
- fastapi_voyager/version.py,sha256=yQ9Z94li508cueSQbrmr6mCxqTFxZVqAMN1_3i0wslM,48
9
+ fastapi_voyager/version.py,sha256=6qBRnYL6PIB365jAxd_3kCArchSbLRDY1CXzkj2QbvA,48
10
10
  fastapi_voyager/voyager.py,sha256=uOQEzrs3o6UUUswvHGRKELNWYUH1ix0Z7SbzMHwm320,10709
11
11
  fastapi_voyager/web/graph-ui.js,sha256=eEjDnJVMvk35LdRoxcqX_fZxLFS9_bUrGAZL6K2O5C0,4176
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=B_MaewnyHmEqozJHmPHYBfF6n5WOvrhoU3tDryS6ngY,10795
14
+ fastapi_voyager/web/index.html,sha256=oTGaZmYqqCdlaX2EtSm_nYzYstvvV5MD_YUxUcMm29s,12331
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
- fastapi_voyager/web/vue-main.js,sha256=ZIxPa0mWOKK7xntfVWbAKzKSx_Tak-TLU-3rkr13wjI,8906
17
+ fastapi_voyager/web/vue-main.js,sha256=nnl5OgGdua9jysqwWXknBIjGeZV2GF2ICxxL47kpsR0,9900
18
18
  fastapi_voyager/web/component/render-graph.js,sha256=e8Xgh2Kl-nYU0P1gstEmAepCgFnk2J6UdxW8TlMafGs,2322
19
19
  fastapi_voyager/web/component/route-code-display.js,sha256=NECC1OGcPCdDfbghtRJEnmFM6HmH5J3win2ibapWPeA,2649
20
20
  fastapi_voyager/web/component/schema-code-display.js,sha256=oOusgTvCaWGnoKb-NBwu0SXqJJf2PTUtp3lUczokTBM,5515
@@ -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.7.3.dist-info/METADATA,sha256=zmLDE0ge68ohzR8MyukOKV-HMgAKpbHPXEb3ouOBwLE,7203
30
- fastapi_voyager-0.7.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
- fastapi_voyager-0.7.3.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
32
- fastapi_voyager-0.7.3.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
33
- fastapi_voyager-0.7.3.dist-info/RECORD,,
29
+ fastapi_voyager-0.7.5.dist-info/METADATA,sha256=mUQ-9OpixGnInICIvRV-1yQOsN8Qi3hQJI2xR0Tud2c,7372
30
+ fastapi_voyager-0.7.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
+ fastapi_voyager-0.7.5.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
32
+ fastapi_voyager-0.7.5.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
33
+ fastapi_voyager-0.7.5.dist-info/RECORD,,