Islam Mamedov commited on
Commit
3df8a15
·
0 Parent(s):

Day 1: ingestion pipeline (code, docs, issues)

Browse files
Files changed (2) hide show
  1. data/manifest.json +1908 -0
  2. src/ingest.py +155 -0
data/manifest.json ADDED
@@ -0,0 +1,1908 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "repo": "fastapi/fastapi",
3
+ "ingested_at": "2026-07-03T07:56:26.690336+00:00",
4
+ "files": [
5
+ {
6
+ "source_type": "doc",
7
+ "path": "README.md",
8
+ "size_bytes": 23110
9
+ },
10
+ {
11
+ "source_type": "doc",
12
+ "path": "docs/en/docs/_llm-test.md",
13
+ "size_bytes": 11247
14
+ },
15
+ {
16
+ "source_type": "doc",
17
+ "path": "docs/en/docs/about/index.md",
18
+ "size_bytes": 74
19
+ },
20
+ {
21
+ "source_type": "doc",
22
+ "path": "docs/en/docs/advanced/additional-responses.md",
23
+ "size_bytes": 9055
24
+ },
25
+ {
26
+ "source_type": "doc",
27
+ "path": "docs/en/docs/advanced/additional-status-codes.md",
28
+ "size_bytes": 2002
29
+ },
30
+ {
31
+ "source_type": "doc",
32
+ "path": "docs/en/docs/advanced/advanced-dependencies.md",
33
+ "size_bytes": 9249
34
+ },
35
+ {
36
+ "source_type": "doc",
37
+ "path": "docs/en/docs/advanced/advanced-python-types.md",
38
+ "size_bytes": 2091
39
+ },
40
+ {
41
+ "source_type": "doc",
42
+ "path": "docs/en/docs/advanced/async-tests.md",
43
+ "size_bytes": 3866
44
+ },
45
+ {
46
+ "source_type": "doc",
47
+ "path": "docs/en/docs/advanced/behind-a-proxy.md",
48
+ "size_bytes": 16177
49
+ },
50
+ {
51
+ "source_type": "doc",
52
+ "path": "docs/en/docs/advanced/custom-response.md",
53
+ "size_bytes": 11291
54
+ },
55
+ {
56
+ "source_type": "doc",
57
+ "path": "docs/en/docs/advanced/dataclasses.md",
58
+ "size_bytes": 4080
59
+ },
60
+ {
61
+ "source_type": "doc",
62
+ "path": "docs/en/docs/advanced/events.md",
63
+ "size_bytes": 7989
64
+ },
65
+ {
66
+ "source_type": "doc",
67
+ "path": "docs/en/docs/advanced/generate-clients.md",
68
+ "size_bytes": 8697
69
+ },
70
+ {
71
+ "source_type": "doc",
72
+ "path": "docs/en/docs/advanced/index.md",
73
+ "size_bytes": 757
74
+ },
75
+ {
76
+ "source_type": "doc",
77
+ "path": "docs/en/docs/advanced/json-base64-bytes.md",
78
+ "size_bytes": 2474
79
+ },
80
+ {
81
+ "source_type": "doc",
82
+ "path": "docs/en/docs/advanced/middleware.md",
83
+ "size_bytes": 4206
84
+ },
85
+ {
86
+ "source_type": "doc",
87
+ "path": "docs/en/docs/advanced/openapi-callbacks.md",
88
+ "size_bytes": 7841
89
+ },
90
+ {
91
+ "source_type": "doc",
92
+ "path": "docs/en/docs/advanced/openapi-webhooks.md",
93
+ "size_bytes": 2948
94
+ },
95
+ {
96
+ "source_type": "doc",
97
+ "path": "docs/en/docs/advanced/path-operation-advanced-configuration.md",
98
+ "size_bytes": 7120
99
+ },
100
+ {
101
+ "source_type": "doc",
102
+ "path": "docs/en/docs/advanced/response-change-status-code.md",
103
+ "size_bytes": 1558
104
+ },
105
+ {
106
+ "source_type": "doc",
107
+ "path": "docs/en/docs/advanced/response-cookies.md",
108
+ "size_bytes": 2232
109
+ },
110
+ {
111
+ "source_type": "doc",
112
+ "path": "docs/en/docs/advanced/response-directly.md",
113
+ "size_bytes": 4137
114
+ },
115
+ {
116
+ "source_type": "doc",
117
+ "path": "docs/en/docs/advanced/response-headers.md",
118
+ "size_bytes": 2204
119
+ },
120
+ {
121
+ "source_type": "doc",
122
+ "path": "docs/en/docs/advanced/security/http-basic-auth.md",
123
+ "size_bytes": 5118
124
+ },
125
+ {
126
+ "source_type": "doc",
127
+ "path": "docs/en/docs/advanced/security/index.md",
128
+ "size_bytes": 648
129
+ },
130
+ {
131
+ "source_type": "doc",
132
+ "path": "docs/en/docs/advanced/security/oauth2-scopes.md",
133
+ "size_bytes": 13769
134
+ },
135
+ {
136
+ "source_type": "doc",
137
+ "path": "docs/en/docs/advanced/settings.md",
138
+ "size_bytes": 11145
139
+ },
140
+ {
141
+ "source_type": "doc",
142
+ "path": "docs/en/docs/advanced/stream-data.md",
143
+ "size_bytes": 5500
144
+ },
145
+ {
146
+ "source_type": "doc",
147
+ "path": "docs/en/docs/advanced/strict-content-type.md",
148
+ "size_bytes": 3292
149
+ },
150
+ {
151
+ "source_type": "doc",
152
+ "path": "docs/en/docs/advanced/sub-applications.md",
153
+ "size_bytes": 2949
154
+ },
155
+ {
156
+ "source_type": "doc",
157
+ "path": "docs/en/docs/advanced/templates.md",
158
+ "size_bytes": 3503
159
+ },
160
+ {
161
+ "source_type": "doc",
162
+ "path": "docs/en/docs/advanced/testing-dependencies.md",
163
+ "size_bytes": 2413
164
+ },
165
+ {
166
+ "source_type": "doc",
167
+ "path": "docs/en/docs/advanced/testing-events.md",
168
+ "size_bytes": 628
169
+ },
170
+ {
171
+ "source_type": "doc",
172
+ "path": "docs/en/docs/advanced/testing-websockets.md",
173
+ "size_bytes": 411
174
+ },
175
+ {
176
+ "source_type": "doc",
177
+ "path": "docs/en/docs/advanced/using-request-directly.md",
178
+ "size_bytes": 2344
179
+ },
180
+ {
181
+ "source_type": "doc",
182
+ "path": "docs/en/docs/advanced/websockets.md",
183
+ "size_bytes": 5472
184
+ },
185
+ {
186
+ "source_type": "doc",
187
+ "path": "docs/en/docs/advanced/wsgi.md",
188
+ "size_bytes": 1470
189
+ },
190
+ {
191
+ "source_type": "doc",
192
+ "path": "docs/en/docs/alternatives.md",
193
+ "size_bytes": 22680
194
+ },
195
+ {
196
+ "source_type": "doc",
197
+ "path": "docs/en/docs/async.md",
198
+ "size_bytes": 23978
199
+ },
200
+ {
201
+ "source_type": "doc",
202
+ "path": "docs/en/docs/benchmarks.md",
203
+ "size_bytes": 3503
204
+ },
205
+ {
206
+ "source_type": "doc",
207
+ "path": "docs/en/docs/contributing.md",
208
+ "size_bytes": 271
209
+ },
210
+ {
211
+ "source_type": "doc",
212
+ "path": "docs/en/docs/deployment/cloud.md",
213
+ "size_bytes": 1203
214
+ },
215
+ {
216
+ "source_type": "doc",
217
+ "path": "docs/en/docs/deployment/concepts.md",
218
+ "size_bytes": 18936
219
+ },
220
+ {
221
+ "source_type": "doc",
222
+ "path": "docs/en/docs/deployment/docker.md",
223
+ "size_bytes": 29005
224
+ },
225
+ {
226
+ "source_type": "doc",
227
+ "path": "docs/en/docs/deployment/fastapicloud.md",
228
+ "size_bytes": 1750
229
+ },
230
+ {
231
+ "source_type": "doc",
232
+ "path": "docs/en/docs/deployment/https.md",
233
+ "size_bytes": 14304
234
+ },
235
+ {
236
+ "source_type": "doc",
237
+ "path": "docs/en/docs/deployment/index.md",
238
+ "size_bytes": 1520
239
+ },
240
+ {
241
+ "source_type": "doc",
242
+ "path": "docs/en/docs/deployment/manually.md",
243
+ "size_bytes": 6707
244
+ },
245
+ {
246
+ "source_type": "doc",
247
+ "path": "docs/en/docs/deployment/server-workers.md",
248
+ "size_bytes": 8372
249
+ },
250
+ {
251
+ "source_type": "doc",
252
+ "path": "docs/en/docs/deployment/versions.md",
253
+ "size_bytes": 3510
254
+ },
255
+ {
256
+ "source_type": "doc",
257
+ "path": "docs/en/docs/editor-support.md",
258
+ "size_bytes": 2516
259
+ },
260
+ {
261
+ "source_type": "doc",
262
+ "path": "docs/en/docs/environment-variables.md",
263
+ "size_bytes": 8113
264
+ },
265
+ {
266
+ "source_type": "doc",
267
+ "path": "docs/en/docs/external-links.md",
268
+ "size_bytes": 926
269
+ },
270
+ {
271
+ "source_type": "doc",
272
+ "path": "docs/en/docs/fastapi-cli.md",
273
+ "size_bytes": 6185
274
+ },
275
+ {
276
+ "source_type": "doc",
277
+ "path": "docs/en/docs/fastapi-people.md",
278
+ "size_bytes": 9274
279
+ },
280
+ {
281
+ "source_type": "doc",
282
+ "path": "docs/en/docs/features.md",
283
+ "size_bytes": 9143
284
+ },
285
+ {
286
+ "source_type": "doc",
287
+ "path": "docs/en/docs/help-fastapi.md",
288
+ "size_bytes": 3818
289
+ },
290
+ {
291
+ "source_type": "doc",
292
+ "path": "docs/en/docs/history-design-future.md",
293
+ "size_bytes": 4090
294
+ },
295
+ {
296
+ "source_type": "doc",
297
+ "path": "docs/en/docs/how-to/authentication-error-status-code.md",
298
+ "size_bytes": 1190
299
+ },
300
+ {
301
+ "source_type": "doc",
302
+ "path": "docs/en/docs/how-to/conditional-openapi.md",
303
+ "size_bytes": 2436
304
+ },
305
+ {
306
+ "source_type": "doc",
307
+ "path": "docs/en/docs/how-to/configure-swagger-ui.md",
308
+ "size_bytes": 2891
309
+ },
310
+ {
311
+ "source_type": "doc",
312
+ "path": "docs/en/docs/how-to/custom-docs-ui-assets.md",
313
+ "size_bytes": 7693
314
+ },
315
+ {
316
+ "source_type": "doc",
317
+ "path": "docs/en/docs/how-to/custom-request-and-route.md",
318
+ "size_bytes": 4556
319
+ },
320
+ {
321
+ "source_type": "doc",
322
+ "path": "docs/en/docs/how-to/extending-openapi.md",
323
+ "size_bytes": 3742
324
+ },
325
+ {
326
+ "source_type": "doc",
327
+ "path": "docs/en/docs/how-to/general.md",
328
+ "size_bytes": 2834
329
+ },
330
+ {
331
+ "source_type": "doc",
332
+ "path": "docs/en/docs/how-to/graphql.md",
333
+ "size_bytes": 2770
334
+ },
335
+ {
336
+ "source_type": "doc",
337
+ "path": "docs/en/docs/how-to/index.md",
338
+ "size_bytes": 582
339
+ },
340
+ {
341
+ "source_type": "doc",
342
+ "path": "docs/en/docs/how-to/migrate-from-pydantic-v1-to-pydantic-v2.md",
343
+ "size_bytes": 6300
344
+ },
345
+ {
346
+ "source_type": "doc",
347
+ "path": "docs/en/docs/how-to/separate-openapi-schemas.md",
348
+ "size_bytes": 4656
349
+ },
350
+ {
351
+ "source_type": "doc",
352
+ "path": "docs/en/docs/how-to/testing-database.md",
353
+ "size_bytes": 393
354
+ },
355
+ {
356
+ "source_type": "doc",
357
+ "path": "docs/en/docs/index.md",
358
+ "size_bytes": 25405
359
+ },
360
+ {
361
+ "source_type": "doc",
362
+ "path": "docs/en/docs/learn/index.md",
363
+ "size_bytes": 206
364
+ },
365
+ {
366
+ "source_type": "doc",
367
+ "path": "docs/en/docs/management.md",
368
+ "size_bytes": 968
369
+ },
370
+ {
371
+ "source_type": "doc",
372
+ "path": "docs/en/docs/newsletter.md",
373
+ "size_bytes": 326
374
+ },
375
+ {
376
+ "source_type": "doc",
377
+ "path": "docs/en/docs/project-generation.md",
378
+ "size_bytes": 1998
379
+ },
380
+ {
381
+ "source_type": "doc",
382
+ "path": "docs/en/docs/python-types.md",
383
+ "size_bytes": 11214
384
+ },
385
+ {
386
+ "source_type": "doc",
387
+ "path": "docs/en/docs/reference/apirouter.md",
388
+ "size_bytes": 547
389
+ },
390
+ {
391
+ "source_type": "doc",
392
+ "path": "docs/en/docs/reference/background.md",
393
+ "size_bytes": 377
394
+ },
395
+ {
396
+ "source_type": "doc",
397
+ "path": "docs/en/docs/reference/dependencies.md",
398
+ "size_bytes": 671
399
+ },
400
+ {
401
+ "source_type": "doc",
402
+ "path": "docs/en/docs/reference/encoders.md",
403
+ "size_bytes": 71
404
+ },
405
+ {
406
+ "source_type": "doc",
407
+ "path": "docs/en/docs/reference/exceptions.md",
408
+ "size_bytes": 597
409
+ },
410
+ {
411
+ "source_type": "doc",
412
+ "path": "docs/en/docs/reference/fastapi.md",
413
+ "size_bytes": 724
414
+ },
415
+ {
416
+ "source_type": "doc",
417
+ "path": "docs/en/docs/reference/httpconnection.md",
418
+ "size_bytes": 359
419
+ },
420
+ {
421
+ "source_type": "doc",
422
+ "path": "docs/en/docs/reference/index.md",
423
+ "size_bytes": 285
424
+ },
425
+ {
426
+ "source_type": "doc",
427
+ "path": "docs/en/docs/reference/middleware.md",
428
+ "size_bytes": 845
429
+ },
430
+ {
431
+ "source_type": "doc",
432
+ "path": "docs/en/docs/reference/openapi/docs.md",
433
+ "size_bytes": 360
434
+ },
435
+ {
436
+ "source_type": "doc",
437
+ "path": "docs/en/docs/reference/openapi/index.md",
438
+ "size_bytes": 158
439
+ },
440
+ {
441
+ "source_type": "doc",
442
+ "path": "docs/en/docs/reference/openapi/models.md",
443
+ "size_bytes": 125
444
+ },
445
+ {
446
+ "source_type": "doc",
447
+ "path": "docs/en/docs/reference/parameters.md",
448
+ "size_bytes": 603
449
+ },
450
+ {
451
+ "source_type": "doc",
452
+ "path": "docs/en/docs/reference/request.md",
453
+ "size_bytes": 652
454
+ },
455
+ {
456
+ "source_type": "doc",
457
+ "path": "docs/en/docs/reference/response.md",
458
+ "size_bytes": 559
459
+ },
460
+ {
461
+ "source_type": "doc",
462
+ "path": "docs/en/docs/reference/responses.md",
463
+ "size_bytes": 4546
464
+ },
465
+ {
466
+ "source_type": "doc",
467
+ "path": "docs/en/docs/reference/security/index.md",
468
+ "size_bytes": 1778
469
+ },
470
+ {
471
+ "source_type": "doc",
472
+ "path": "docs/en/docs/reference/staticfiles.md",
473
+ "size_bytes": 391
474
+ },
475
+ {
476
+ "source_type": "doc",
477
+ "path": "docs/en/docs/reference/status.md",
478
+ "size_bytes": 861
479
+ },
480
+ {
481
+ "source_type": "doc",
482
+ "path": "docs/en/docs/reference/templating.md",
483
+ "size_bytes": 365
484
+ },
485
+ {
486
+ "source_type": "doc",
487
+ "path": "docs/en/docs/reference/testclient.md",
488
+ "size_bytes": 450
489
+ },
490
+ {
491
+ "source_type": "doc",
492
+ "path": "docs/en/docs/reference/uploadfile.md",
493
+ "size_bytes": 472
494
+ },
495
+ {
496
+ "source_type": "doc",
497
+ "path": "docs/en/docs/reference/websockets.md",
498
+ "size_bytes": 2007
499
+ },
500
+ {
501
+ "source_type": "doc",
502
+ "path": "docs/en/docs/resources/index.md",
503
+ "size_bytes": 83
504
+ },
505
+ {
506
+ "source_type": "doc",
507
+ "path": "docs/en/docs/translation-banner.md",
508
+ "size_bytes": 379
509
+ },
510
+ {
511
+ "source_type": "doc",
512
+ "path": "docs/en/docs/translations.md",
513
+ "size_bytes": 1982
514
+ },
515
+ {
516
+ "source_type": "doc",
517
+ "path": "docs/en/docs/tutorial/background-tasks.md",
518
+ "size_bytes": 4794
519
+ },
520
+ {
521
+ "source_type": "doc",
522
+ "path": "docs/en/docs/tutorial/bigger-applications.md",
523
+ "size_bytes": 20384
524
+ },
525
+ {
526
+ "source_type": "doc",
527
+ "path": "docs/en/docs/tutorial/body-fields.md",
528
+ "size_bytes": 2388
529
+ },
530
+ {
531
+ "source_type": "doc",
532
+ "path": "docs/en/docs/tutorial/body-multiple-params.md",
533
+ "size_bytes": 4932
534
+ },
535
+ {
536
+ "source_type": "doc",
537
+ "path": "docs/en/docs/tutorial/body-nested-models.md",
538
+ "size_bytes": 6807
539
+ },
540
+ {
541
+ "source_type": "doc",
542
+ "path": "docs/en/docs/tutorial/body-updates.md",
543
+ "size_bytes": 4091
544
+ },
545
+ {
546
+ "source_type": "doc",
547
+ "path": "docs/en/docs/tutorial/body.md",
548
+ "size_bytes": 6611
549
+ },
550
+ {
551
+ "source_type": "doc",
552
+ "path": "docs/en/docs/tutorial/cookie-param-models.md",
553
+ "size_bytes": 3141
554
+ },
555
+ {
556
+ "source_type": "doc",
557
+ "path": "docs/en/docs/tutorial/cookie-params.md",
558
+ "size_bytes": 1602
559
+ },
560
+ {
561
+ "source_type": "doc",
562
+ "path": "docs/en/docs/tutorial/cors.md",
563
+ "size_bytes": 5370
564
+ },
565
+ {
566
+ "source_type": "doc",
567
+ "path": "docs/en/docs/tutorial/debugging.md",
568
+ "size_bytes": 2456
569
+ },
570
+ {
571
+ "source_type": "doc",
572
+ "path": "docs/en/docs/tutorial/dependencies/classes-as-dependencies.md",
573
+ "size_bytes": 6915
574
+ },
575
+ {
576
+ "source_type": "doc",
577
+ "path": "docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md",
578
+ "size_bytes": 2954
579
+ },
580
+ {
581
+ "source_type": "doc",
582
+ "path": "docs/en/docs/tutorial/dependencies/dependencies-with-yield.md",
583
+ "size_bytes": 12857
584
+ },
585
+ {
586
+ "source_type": "doc",
587
+ "path": "docs/en/docs/tutorial/dependencies/global-dependencies.md",
588
+ "size_bytes": 1060
589
+ },
590
+ {
591
+ "source_type": "doc",
592
+ "path": "docs/en/docs/tutorial/dependencies/index.md",
593
+ "size_bytes": 9771
594
+ },
595
+ {
596
+ "source_type": "doc",
597
+ "path": "docs/en/docs/tutorial/dependencies/sub-dependencies.md",
598
+ "size_bytes": 3820
599
+ },
600
+ {
601
+ "source_type": "doc",
602
+ "path": "docs/en/docs/tutorial/encoder.md",
603
+ "size_bytes": 1608
604
+ },
605
+ {
606
+ "source_type": "doc",
607
+ "path": "docs/en/docs/tutorial/extra-data-types.md",
608
+ "size_bytes": 2674
609
+ },
610
+ {
611
+ "source_type": "doc",
612
+ "path": "docs/en/docs/tutorial/extra-models.md",
613
+ "size_bytes": 6881
614
+ },
615
+ {
616
+ "source_type": "doc",
617
+ "path": "docs/en/docs/tutorial/first-steps.md",
618
+ "size_bytes": 13757
619
+ },
620
+ {
621
+ "source_type": "doc",
622
+ "path": "docs/en/docs/tutorial/frontend.md",
623
+ "size_bytes": 5742
624
+ },
625
+ {
626
+ "source_type": "doc",
627
+ "path": "docs/en/docs/tutorial/handling-errors.md",
628
+ "size_bytes": 9160
629
+ },
630
+ {
631
+ "source_type": "doc",
632
+ "path": "docs/en/docs/tutorial/header-param-models.md",
633
+ "size_bytes": 2679
634
+ },
635
+ {
636
+ "source_type": "doc",
637
+ "path": "docs/en/docs/tutorial/header-params.md",
638
+ "size_bytes": 3032
639
+ },
640
+ {
641
+ "source_type": "doc",
642
+ "path": "docs/en/docs/tutorial/index.md",
643
+ "size_bytes": 5414
644
+ },
645
+ {
646
+ "source_type": "doc",
647
+ "path": "docs/en/docs/tutorial/metadata.md",
648
+ "size_bytes": 5974
649
+ },
650
+ {
651
+ "source_type": "doc",
652
+ "path": "docs/en/docs/tutorial/middleware.md",
653
+ "size_bytes": 3955
654
+ },
655
+ {
656
+ "source_type": "doc",
657
+ "path": "docs/en/docs/tutorial/path-operation-configuration.md",
658
+ "size_bytes": 4121
659
+ },
660
+ {
661
+ "source_type": "doc",
662
+ "path": "docs/en/docs/tutorial/path-params-numeric-validations.md",
663
+ "size_bytes": 6208
664
+ },
665
+ {
666
+ "source_type": "doc",
667
+ "path": "docs/en/docs/tutorial/path-params.md",
668
+ "size_bytes": 9043
669
+ },
670
+ {
671
+ "source_type": "doc",
672
+ "path": "docs/en/docs/tutorial/query-param-models.md",
673
+ "size_bytes": 2224
674
+ },
675
+ {
676
+ "source_type": "doc",
677
+ "path": "docs/en/docs/tutorial/query-params-str-validations.md",
678
+ "size_bytes": 16640
679
+ },
680
+ {
681
+ "source_type": "doc",
682
+ "path": "docs/en/docs/tutorial/query-params.md",
683
+ "size_bytes": 4596
684
+ },
685
+ {
686
+ "source_type": "doc",
687
+ "path": "docs/en/docs/tutorial/request-files.md",
688
+ "size_bytes": 7182
689
+ },
690
+ {
691
+ "source_type": "doc",
692
+ "path": "docs/en/docs/tutorial/request-form-models.md",
693
+ "size_bytes": 2157
694
+ },
695
+ {
696
+ "source_type": "doc",
697
+ "path": "docs/en/docs/tutorial/request-forms-and-files.md",
698
+ "size_bytes": 1454
699
+ },
700
+ {
701
+ "source_type": "doc",
702
+ "path": "docs/en/docs/tutorial/request-forms.md",
703
+ "size_bytes": 2626
704
+ },
705
+ {
706
+ "source_type": "doc",
707
+ "path": "docs/en/docs/tutorial/response-model.md",
708
+ "size_bytes": 15876
709
+ },
710
+ {
711
+ "source_type": "doc",
712
+ "path": "docs/en/docs/tutorial/response-status-code.md",
713
+ "size_bytes": 3994
714
+ },
715
+ {
716
+ "source_type": "doc",
717
+ "path": "docs/en/docs/tutorial/schema-extra-example.md",
718
+ "size_bytes": 8950
719
+ },
720
+ {
721
+ "source_type": "doc",
722
+ "path": "docs/en/docs/tutorial/security/first-steps.md",
723
+ "size_bytes": 8452
724
+ },
725
+ {
726
+ "source_type": "doc",
727
+ "path": "docs/en/docs/tutorial/security/get-current-user.md",
728
+ "size_bytes": 4117
729
+ },
730
+ {
731
+ "source_type": "doc",
732
+ "path": "docs/en/docs/tutorial/security/index.md",
733
+ "size_bytes": 4548
734
+ },
735
+ {
736
+ "source_type": "doc",
737
+ "path": "docs/en/docs/tutorial/security/oauth2-jwt.md",
738
+ "size_bytes": 10944
739
+ },
740
+ {
741
+ "source_type": "doc",
742
+ "path": "docs/en/docs/tutorial/security/simple-oauth2.md",
743
+ "size_bytes": 9589
744
+ },
745
+ {
746
+ "source_type": "doc",
747
+ "path": "docs/en/docs/tutorial/server-sent-events.md",
748
+ "size_bytes": 4704
749
+ },
750
+ {
751
+ "source_type": "doc",
752
+ "path": "docs/en/docs/tutorial/sql-databases.md",
753
+ "size_bytes": 15705
754
+ },
755
+ {
756
+ "source_type": "doc",
757
+ "path": "docs/en/docs/tutorial/static-files.md",
758
+ "size_bytes": 1925
759
+ },
760
+ {
761
+ "source_type": "doc",
762
+ "path": "docs/en/docs/tutorial/stream-json-lines.md",
763
+ "size_bytes": 4452
764
+ },
765
+ {
766
+ "source_type": "doc",
767
+ "path": "docs/en/docs/tutorial/testing.md",
768
+ "size_bytes": 5825
769
+ },
770
+ {
771
+ "source_type": "doc",
772
+ "path": "docs/en/docs/virtual-environments.md",
773
+ "size_bytes": 22668
774
+ },
775
+ {
776
+ "source_type": "doc",
777
+ "path": "fastapi/.agents/skills/fastapi/SKILL.md",
778
+ "size_bytes": 10111
779
+ },
780
+ {
781
+ "source_type": "doc",
782
+ "path": "fastapi/.agents/skills/fastapi/references/dependencies.md",
783
+ "size_bytes": 3268
784
+ },
785
+ {
786
+ "source_type": "doc",
787
+ "path": "fastapi/.agents/skills/fastapi/references/other-tools.md",
788
+ "size_bytes": 1527
789
+ },
790
+ {
791
+ "source_type": "doc",
792
+ "path": "fastapi/.agents/skills/fastapi/references/path-operations.md",
793
+ "size_bytes": 1583
794
+ },
795
+ {
796
+ "source_type": "doc",
797
+ "path": "fastapi/.agents/skills/fastapi/references/pydantic.md",
798
+ "size_bytes": 1844
799
+ },
800
+ {
801
+ "source_type": "doc",
802
+ "path": "fastapi/.agents/skills/fastapi/references/responses.md",
803
+ "size_bytes": 1856
804
+ },
805
+ {
806
+ "source_type": "doc",
807
+ "path": "fastapi/.agents/skills/fastapi/references/streaming.md",
808
+ "size_bytes": 2581
809
+ },
810
+ {
811
+ "source_type": "code",
812
+ "path": "fastapi/__init__.py",
813
+ "size_bytes": 1081
814
+ },
815
+ {
816
+ "source_type": "code",
817
+ "path": "fastapi/__main__.py",
818
+ "size_bytes": 37
819
+ },
820
+ {
821
+ "source_type": "code",
822
+ "path": "fastapi/_compat/__init__.py",
823
+ "size_bytes": 2095
824
+ },
825
+ {
826
+ "source_type": "code",
827
+ "path": "fastapi/_compat/shared.py",
828
+ "size_bytes": 7118
829
+ },
830
+ {
831
+ "source_type": "code",
832
+ "path": "fastapi/_compat/v2.py",
833
+ "size_bytes": 17601
834
+ },
835
+ {
836
+ "source_type": "code",
837
+ "path": "fastapi/background.py",
838
+ "size_bytes": 1820
839
+ },
840
+ {
841
+ "source_type": "code",
842
+ "path": "fastapi/cli.py",
843
+ "size_bytes": 418
844
+ },
845
+ {
846
+ "source_type": "code",
847
+ "path": "fastapi/concurrency.py",
848
+ "size_bytes": 1489
849
+ },
850
+ {
851
+ "source_type": "code",
852
+ "path": "fastapi/datastructures.py",
853
+ "size_bytes": 5321
854
+ },
855
+ {
856
+ "source_type": "code",
857
+ "path": "fastapi/dependencies/models.py",
858
+ "size_bytes": 7250
859
+ },
860
+ {
861
+ "source_type": "code",
862
+ "path": "fastapi/dependencies/utils.py",
863
+ "size_bytes": 39728
864
+ },
865
+ {
866
+ "source_type": "code",
867
+ "path": "fastapi/encoders.py",
868
+ "size_bytes": 11603
869
+ },
870
+ {
871
+ "source_type": "code",
872
+ "path": "fastapi/exception_handlers.py",
873
+ "size_bytes": 1275
874
+ },
875
+ {
876
+ "source_type": "code",
877
+ "path": "fastapi/exceptions.py",
878
+ "size_bytes": 7453
879
+ },
880
+ {
881
+ "source_type": "code",
882
+ "path": "fastapi/logger.py",
883
+ "size_bytes": 54
884
+ },
885
+ {
886
+ "source_type": "code",
887
+ "path": "fastapi/middleware/__init__.py",
888
+ "size_bytes": 58
889
+ },
890
+ {
891
+ "source_type": "code",
892
+ "path": "fastapi/middleware/asyncexitstack.py",
893
+ "size_bytes": 637
894
+ },
895
+ {
896
+ "source_type": "code",
897
+ "path": "fastapi/middleware/cors.py",
898
+ "size_bytes": 79
899
+ },
900
+ {
901
+ "source_type": "code",
902
+ "path": "fastapi/middleware/gzip.py",
903
+ "size_bytes": 79
904
+ },
905
+ {
906
+ "source_type": "code",
907
+ "path": "fastapi/middleware/httpsredirect.py",
908
+ "size_bytes": 115
909
+ },
910
+ {
911
+ "source_type": "code",
912
+ "path": "fastapi/middleware/trustedhost.py",
913
+ "size_bytes": 109
914
+ },
915
+ {
916
+ "source_type": "code",
917
+ "path": "fastapi/middleware/wsgi.py",
918
+ "size_bytes": 107
919
+ },
920
+ {
921
+ "source_type": "code",
922
+ "path": "fastapi/openapi/constants.py",
923
+ "size_bytes": 153
924
+ },
925
+ {
926
+ "source_type": "code",
927
+ "path": "fastapi/openapi/docs.py",
928
+ "size_bytes": 12425
929
+ },
930
+ {
931
+ "source_type": "code",
932
+ "path": "fastapi/openapi/models.py",
933
+ "size_bytes": 14608
934
+ },
935
+ {
936
+ "source_type": "code",
937
+ "path": "fastapi/openapi/utils.py",
938
+ "size_bytes": 26916
939
+ },
940
+ {
941
+ "source_type": "code",
942
+ "path": "fastapi/param_functions.py",
943
+ "size_bytes": 69596
944
+ },
945
+ {
946
+ "source_type": "code",
947
+ "path": "fastapi/params.py",
948
+ "size_bytes": 26205
949
+ },
950
+ {
951
+ "source_type": "code",
952
+ "path": "fastapi/requests.py",
953
+ "size_bytes": 142
954
+ },
955
+ {
956
+ "source_type": "code",
957
+ "path": "fastapi/responses.py",
958
+ "size_bytes": 4144
959
+ },
960
+ {
961
+ "source_type": "code",
962
+ "path": "fastapi/security/__init__.py",
963
+ "size_bytes": 881
964
+ },
965
+ {
966
+ "source_type": "code",
967
+ "path": "fastapi/security/api_key.py",
968
+ "size_bytes": 9793
969
+ },
970
+ {
971
+ "source_type": "code",
972
+ "path": "fastapi/security/base.py",
973
+ "size_bytes": 141
974
+ },
975
+ {
976
+ "source_type": "code",
977
+ "path": "fastapi/security/http.py",
978
+ "size_bytes": 13410
979
+ },
980
+ {
981
+ "source_type": "code",
982
+ "path": "fastapi/security/oauth2.py",
983
+ "size_bytes": 24178
984
+ },
985
+ {
986
+ "source_type": "code",
987
+ "path": "fastapi/security/open_id_connect_url.py",
988
+ "size_bytes": 3136
989
+ },
990
+ {
991
+ "source_type": "code",
992
+ "path": "fastapi/security/utils.py",
993
+ "size_bytes": 261
994
+ },
995
+ {
996
+ "source_type": "code",
997
+ "path": "fastapi/sse.py",
998
+ "size_bytes": 6848
999
+ },
1000
+ {
1001
+ "source_type": "code",
1002
+ "path": "fastapi/staticfiles.py",
1003
+ "size_bytes": 69
1004
+ },
1005
+ {
1006
+ "source_type": "code",
1007
+ "path": "fastapi/templating.py",
1008
+ "size_bytes": 76
1009
+ },
1010
+ {
1011
+ "source_type": "code",
1012
+ "path": "fastapi/testclient.py",
1013
+ "size_bytes": 66
1014
+ },
1015
+ {
1016
+ "source_type": "code",
1017
+ "path": "fastapi/types.py",
1018
+ "size_bytes": 438
1019
+ },
1020
+ {
1021
+ "source_type": "code",
1022
+ "path": "fastapi/utils.py",
1023
+ "size_bytes": 4341
1024
+ },
1025
+ {
1026
+ "source_type": "code",
1027
+ "path": "fastapi/websockets.py",
1028
+ "size_bytes": 222
1029
+ }
1030
+ ],
1031
+ "issues": [
1032
+ {
1033
+ "source_type": "issue",
1034
+ "path": "issues/617.json",
1035
+ "url": "https://github.com/fastapi/fastapi/issues/617"
1036
+ },
1037
+ {
1038
+ "source_type": "issue",
1039
+ "path": "issues/142.json",
1040
+ "url": "https://github.com/fastapi/fastapi/issues/142"
1041
+ },
1042
+ {
1043
+ "source_type": "issue",
1044
+ "path": "issues/10857.json",
1045
+ "url": "https://github.com/fastapi/fastapi/issues/10857"
1046
+ },
1047
+ {
1048
+ "source_type": "issue",
1049
+ "path": "issues/11143.json",
1050
+ "url": "https://github.com/fastapi/fastapi/issues/11143"
1051
+ },
1052
+ {
1053
+ "source_type": "issue",
1054
+ "path": "issues/12133.json",
1055
+ "url": "https://github.com/fastapi/fastapi/issues/12133"
1056
+ },
1057
+ {
1058
+ "source_type": "issue",
1059
+ "path": "issues/754.json",
1060
+ "url": "https://github.com/fastapi/fastapi/issues/754"
1061
+ },
1062
+ {
1063
+ "source_type": "issue",
1064
+ "path": "issues/11573.json",
1065
+ "url": "https://github.com/fastapi/fastapi/issues/11573"
1066
+ },
1067
+ {
1068
+ "source_type": "issue",
1069
+ "path": "issues/13399.json",
1070
+ "url": "https://github.com/fastapi/fastapi/issues/13399"
1071
+ },
1072
+ {
1073
+ "source_type": "issue",
1074
+ "path": "issues/12965.json",
1075
+ "url": "https://github.com/fastapi/fastapi/issues/12965"
1076
+ },
1077
+ {
1078
+ "source_type": "issue",
1079
+ "path": "issues/12554.json",
1080
+ "url": "https://github.com/fastapi/fastapi/issues/12554"
1081
+ },
1082
+ {
1083
+ "source_type": "issue",
1084
+ "path": "issues/1773.json",
1085
+ "url": "https://github.com/fastapi/fastapi/issues/1773"
1086
+ },
1087
+ {
1088
+ "source_type": "issue",
1089
+ "path": "issues/13533.json",
1090
+ "url": "https://github.com/fastapi/fastapi/issues/13533"
1091
+ },
1092
+ {
1093
+ "source_type": "issue",
1094
+ "path": "issues/10007.json",
1095
+ "url": "https://github.com/fastapi/fastapi/issues/10007"
1096
+ },
1097
+ {
1098
+ "source_type": "issue",
1099
+ "path": "issues/1273.json",
1100
+ "url": "https://github.com/fastapi/fastapi/issues/1273"
1101
+ },
1102
+ {
1103
+ "source_type": "issue",
1104
+ "path": "issues/190.json",
1105
+ "url": "https://github.com/fastapi/fastapi/issues/190"
1106
+ },
1107
+ {
1108
+ "source_type": "issue",
1109
+ "path": "issues/10180.json",
1110
+ "url": "https://github.com/fastapi/fastapi/issues/10180"
1111
+ },
1112
+ {
1113
+ "source_type": "issue",
1114
+ "path": "issues/4939.json",
1115
+ "url": "https://github.com/fastapi/fastapi/issues/4939"
1116
+ },
1117
+ {
1118
+ "source_type": "issue",
1119
+ "path": "issues/12402.json",
1120
+ "url": "https://github.com/fastapi/fastapi/issues/12402"
1121
+ },
1122
+ {
1123
+ "source_type": "issue",
1124
+ "path": "issues/13056.json",
1125
+ "url": "https://github.com/fastapi/fastapi/issues/13056"
1126
+ },
1127
+ {
1128
+ "source_type": "issue",
1129
+ "path": "issues/3920.json",
1130
+ "url": "https://github.com/fastapi/fastapi/issues/3920"
1131
+ },
1132
+ {
1133
+ "source_type": "issue",
1134
+ "path": "issues/13400.json",
1135
+ "url": "https://github.com/fastapi/fastapi/issues/13400"
1136
+ },
1137
+ {
1138
+ "source_type": "issue",
1139
+ "path": "issues/12313.json",
1140
+ "url": "https://github.com/fastapi/fastapi/issues/12313"
1141
+ },
1142
+ {
1143
+ "source_type": "issue",
1144
+ "path": "issues/10360.json",
1145
+ "url": "https://github.com/fastapi/fastapi/issues/10360"
1146
+ },
1147
+ {
1148
+ "source_type": "issue",
1149
+ "path": "issues/3163.json",
1150
+ "url": "https://github.com/fastapi/fastapi/issues/3163"
1151
+ },
1152
+ {
1153
+ "source_type": "issue",
1154
+ "path": "issues/12419.json",
1155
+ "url": "https://github.com/fastapi/fastapi/issues/12419"
1156
+ },
1157
+ {
1158
+ "source_type": "issue",
1159
+ "path": "issues/2008.json",
1160
+ "url": "https://github.com/fastapi/fastapi/issues/2008"
1161
+ },
1162
+ {
1163
+ "source_type": "issue",
1164
+ "path": "issues/9424.json",
1165
+ "url": "https://github.com/fastapi/fastapi/issues/9424"
1166
+ },
1167
+ {
1168
+ "source_type": "issue",
1169
+ "path": "issues/1476.json",
1170
+ "url": "https://github.com/fastapi/fastapi/issues/1476"
1171
+ },
1172
+ {
1173
+ "source_type": "issue",
1174
+ "path": "issues/14128.json",
1175
+ "url": "https://github.com/fastapi/fastapi/issues/14128"
1176
+ },
1177
+ {
1178
+ "source_type": "issue",
1179
+ "path": "issues/10177.json",
1180
+ "url": "https://github.com/fastapi/fastapi/issues/10177"
1181
+ },
1182
+ {
1183
+ "source_type": "issue",
1184
+ "path": "issues/13880.json",
1185
+ "url": "https://github.com/fastapi/fastapi/issues/13880"
1186
+ },
1187
+ {
1188
+ "source_type": "issue",
1189
+ "path": "issues/12245.json",
1190
+ "url": "https://github.com/fastapi/fastapi/issues/12245"
1191
+ },
1192
+ {
1193
+ "source_type": "issue",
1194
+ "path": "issues/11037.json",
1195
+ "url": "https://github.com/fastapi/fastapi/issues/11037"
1196
+ },
1197
+ {
1198
+ "source_type": "issue",
1199
+ "path": "issues/608.json",
1200
+ "url": "https://github.com/fastapi/fastapi/issues/608"
1201
+ },
1202
+ {
1203
+ "source_type": "issue",
1204
+ "path": "issues/501.json",
1205
+ "url": "https://github.com/fastapi/fastapi/issues/501"
1206
+ },
1207
+ {
1208
+ "source_type": "issue",
1209
+ "path": "issues/10999.json",
1210
+ "url": "https://github.com/fastapi/fastapi/issues/10999"
1211
+ },
1212
+ {
1213
+ "source_type": "issue",
1214
+ "path": "issues/10286.json",
1215
+ "url": "https://github.com/fastapi/fastapi/issues/10286"
1216
+ },
1217
+ {
1218
+ "source_type": "issue",
1219
+ "path": "issues/10259.json",
1220
+ "url": "https://github.com/fastapi/fastapi/issues/10259"
1221
+ },
1222
+ {
1223
+ "source_type": "issue",
1224
+ "path": "issues/12198.json",
1225
+ "url": "https://github.com/fastapi/fastapi/issues/12198"
1226
+ },
1227
+ {
1228
+ "source_type": "issue",
1229
+ "path": "issues/10424.json",
1230
+ "url": "https://github.com/fastapi/fastapi/issues/10424"
1231
+ },
1232
+ {
1233
+ "source_type": "issue",
1234
+ "path": "issues/3500.json",
1235
+ "url": "https://github.com/fastapi/fastapi/issues/3500"
1236
+ },
1237
+ {
1238
+ "source_type": "issue",
1239
+ "path": "issues/639.json",
1240
+ "url": "https://github.com/fastapi/fastapi/issues/639"
1241
+ },
1242
+ {
1243
+ "source_type": "issue",
1244
+ "path": "issues/11134.json",
1245
+ "url": "https://github.com/fastapi/fastapi/issues/11134"
1246
+ },
1247
+ {
1248
+ "source_type": "issue",
1249
+ "path": "issues/10719.json",
1250
+ "url": "https://github.com/fastapi/fastapi/issues/10719"
1251
+ },
1252
+ {
1253
+ "source_type": "issue",
1254
+ "path": "issues/10236.json",
1255
+ "url": "https://github.com/fastapi/fastapi/issues/10236"
1256
+ },
1257
+ {
1258
+ "source_type": "issue",
1259
+ "path": "issues/15612.json",
1260
+ "url": "https://github.com/fastapi/fastapi/issues/15612"
1261
+ },
1262
+ {
1263
+ "source_type": "issue",
1264
+ "path": "issues/15401.json",
1265
+ "url": "https://github.com/fastapi/fastapi/issues/15401"
1266
+ },
1267
+ {
1268
+ "source_type": "issue",
1269
+ "path": "issues/13471.json",
1270
+ "url": "https://github.com/fastapi/fastapi/issues/13471"
1271
+ },
1272
+ {
1273
+ "source_type": "issue",
1274
+ "path": "issues/13067.json",
1275
+ "url": "https://github.com/fastapi/fastapi/issues/13067"
1276
+ },
1277
+ {
1278
+ "source_type": "issue",
1279
+ "path": "issues/11215.json",
1280
+ "url": "https://github.com/fastapi/fastapi/issues/11215"
1281
+ },
1282
+ {
1283
+ "source_type": "issue",
1284
+ "path": "issues/10787.json",
1285
+ "url": "https://github.com/fastapi/fastapi/issues/10787"
1286
+ },
1287
+ {
1288
+ "source_type": "issue",
1289
+ "path": "issues/10322.json",
1290
+ "url": "https://github.com/fastapi/fastapi/issues/10322"
1291
+ },
1292
+ {
1293
+ "source_type": "issue",
1294
+ "path": "issues/3317.json",
1295
+ "url": "https://github.com/fastapi/fastapi/issues/3317"
1296
+ },
1297
+ {
1298
+ "source_type": "issue",
1299
+ "path": "issues/13175.json",
1300
+ "url": "https://github.com/fastapi/fastapi/issues/13175"
1301
+ },
1302
+ {
1303
+ "source_type": "issue",
1304
+ "path": "issues/13150.json",
1305
+ "url": "https://github.com/fastapi/fastapi/issues/13150"
1306
+ },
1307
+ {
1308
+ "source_type": "issue",
1309
+ "path": "issues/12459.json",
1310
+ "url": "https://github.com/fastapi/fastapi/issues/12459"
1311
+ },
1312
+ {
1313
+ "source_type": "issue",
1314
+ "path": "issues/5060.json",
1315
+ "url": "https://github.com/fastapi/fastapi/issues/5060"
1316
+ },
1317
+ {
1318
+ "source_type": "issue",
1319
+ "path": "issues/14221.json",
1320
+ "url": "https://github.com/fastapi/fastapi/issues/14221"
1321
+ },
1322
+ {
1323
+ "source_type": "issue",
1324
+ "path": "issues/12426.json",
1325
+ "url": "https://github.com/fastapi/fastapi/issues/12426"
1326
+ },
1327
+ {
1328
+ "source_type": "issue",
1329
+ "path": "issues/12246.json",
1330
+ "url": "https://github.com/fastapi/fastapi/issues/12246"
1331
+ },
1332
+ {
1333
+ "source_type": "issue",
1334
+ "path": "issues/11251.json",
1335
+ "url": "https://github.com/fastapi/fastapi/issues/11251"
1336
+ },
1337
+ {
1338
+ "source_type": "issue",
1339
+ "path": "issues/10998.json",
1340
+ "url": "https://github.com/fastapi/fastapi/issues/10998"
1341
+ },
1342
+ {
1343
+ "source_type": "issue",
1344
+ "path": "issues/10997.json",
1345
+ "url": "https://github.com/fastapi/fastapi/issues/10997"
1346
+ },
1347
+ {
1348
+ "source_type": "issue",
1349
+ "path": "issues/10720.json",
1350
+ "url": "https://github.com/fastapi/fastapi/issues/10720"
1351
+ },
1352
+ {
1353
+ "source_type": "issue",
1354
+ "path": "issues/10127.json",
1355
+ "url": "https://github.com/fastapi/fastapi/issues/10127"
1356
+ },
1357
+ {
1358
+ "source_type": "issue",
1359
+ "path": "issues/1204.json",
1360
+ "url": "https://github.com/fastapi/fastapi/issues/1204"
1361
+ },
1362
+ {
1363
+ "source_type": "issue",
1364
+ "path": "issues/14680.json",
1365
+ "url": "https://github.com/fastapi/fastapi/issues/14680"
1366
+ },
1367
+ {
1368
+ "source_type": "issue",
1369
+ "path": "issues/12240.json",
1370
+ "url": "https://github.com/fastapi/fastapi/issues/12240"
1371
+ },
1372
+ {
1373
+ "source_type": "issue",
1374
+ "path": "issues/12239.json",
1375
+ "url": "https://github.com/fastapi/fastapi/issues/12239"
1376
+ },
1377
+ {
1378
+ "source_type": "issue",
1379
+ "path": "issues/54.json",
1380
+ "url": "https://github.com/fastapi/fastapi/issues/54"
1381
+ },
1382
+ {
1383
+ "source_type": "issue",
1384
+ "path": "issues/15845.json",
1385
+ "url": "https://github.com/fastapi/fastapi/issues/15845"
1386
+ },
1387
+ {
1388
+ "source_type": "issue",
1389
+ "path": "issues/15503.json",
1390
+ "url": "https://github.com/fastapi/fastapi/issues/15503"
1391
+ },
1392
+ {
1393
+ "source_type": "issue",
1394
+ "path": "issues/14454.json",
1395
+ "url": "https://github.com/fastapi/fastapi/issues/14454"
1396
+ },
1397
+ {
1398
+ "source_type": "issue",
1399
+ "path": "issues/13019.json",
1400
+ "url": "https://github.com/fastapi/fastapi/issues/13019"
1401
+ },
1402
+ {
1403
+ "source_type": "issue",
1404
+ "path": "issues/11892.json",
1405
+ "url": "https://github.com/fastapi/fastapi/issues/11892"
1406
+ },
1407
+ {
1408
+ "source_type": "issue",
1409
+ "path": "issues/5642.json",
1410
+ "url": "https://github.com/fastapi/fastapi/issues/5642"
1411
+ },
1412
+ {
1413
+ "source_type": "issue",
1414
+ "path": "issues/1131.json",
1415
+ "url": "https://github.com/fastapi/fastapi/issues/1131"
1416
+ },
1417
+ {
1418
+ "source_type": "issue",
1419
+ "path": "issues/15448.json",
1420
+ "url": "https://github.com/fastapi/fastapi/issues/15448"
1421
+ },
1422
+ {
1423
+ "source_type": "issue",
1424
+ "path": "issues/15188.json",
1425
+ "url": "https://github.com/fastapi/fastapi/issues/15188"
1426
+ },
1427
+ {
1428
+ "source_type": "issue",
1429
+ "path": "issues/14888.json",
1430
+ "url": "https://github.com/fastapi/fastapi/issues/14888"
1431
+ },
1432
+ {
1433
+ "source_type": "issue",
1434
+ "path": "issues/14344.json",
1435
+ "url": "https://github.com/fastapi/fastapi/issues/14344"
1436
+ },
1437
+ {
1438
+ "source_type": "issue",
1439
+ "path": "issues/13606.json",
1440
+ "url": "https://github.com/fastapi/fastapi/issues/13606"
1441
+ },
1442
+ {
1443
+ "source_type": "issue",
1444
+ "path": "issues/13440.json",
1445
+ "url": "https://github.com/fastapi/fastapi/issues/13440"
1446
+ },
1447
+ {
1448
+ "source_type": "issue",
1449
+ "path": "issues/13116.json",
1450
+ "url": "https://github.com/fastapi/fastapi/issues/13116"
1451
+ },
1452
+ {
1453
+ "source_type": "issue",
1454
+ "path": "issues/13022.json",
1455
+ "url": "https://github.com/fastapi/fastapi/issues/13022"
1456
+ },
1457
+ {
1458
+ "source_type": "issue",
1459
+ "path": "issues/12780.json",
1460
+ "url": "https://github.com/fastapi/fastapi/issues/12780"
1461
+ },
1462
+ {
1463
+ "source_type": "issue",
1464
+ "path": "issues/12055.json",
1465
+ "url": "https://github.com/fastapi/fastapi/issues/12055"
1466
+ },
1467
+ {
1468
+ "source_type": "issue",
1469
+ "path": "issues/11580.json",
1470
+ "url": "https://github.com/fastapi/fastapi/issues/11580"
1471
+ },
1472
+ {
1473
+ "source_type": "issue",
1474
+ "path": "issues/15764.json",
1475
+ "url": "https://github.com/fastapi/fastapi/issues/15764"
1476
+ },
1477
+ {
1478
+ "source_type": "issue",
1479
+ "path": "issues/15762.json",
1480
+ "url": "https://github.com/fastapi/fastapi/issues/15762"
1481
+ },
1482
+ {
1483
+ "source_type": "issue",
1484
+ "path": "issues/15716.json",
1485
+ "url": "https://github.com/fastapi/fastapi/issues/15716"
1486
+ },
1487
+ {
1488
+ "source_type": "issue",
1489
+ "path": "issues/15715.json",
1490
+ "url": "https://github.com/fastapi/fastapi/issues/15715"
1491
+ },
1492
+ {
1493
+ "source_type": "issue",
1494
+ "path": "issues/15714.json",
1495
+ "url": "https://github.com/fastapi/fastapi/issues/15714"
1496
+ },
1497
+ {
1498
+ "source_type": "issue",
1499
+ "path": "issues/15713.json",
1500
+ "url": "https://github.com/fastapi/fastapi/issues/15713"
1501
+ },
1502
+ {
1503
+ "source_type": "issue",
1504
+ "path": "issues/15712.json",
1505
+ "url": "https://github.com/fastapi/fastapi/issues/15712"
1506
+ },
1507
+ {
1508
+ "source_type": "issue",
1509
+ "path": "issues/15268.json",
1510
+ "url": "https://github.com/fastapi/fastapi/issues/15268"
1511
+ },
1512
+ {
1513
+ "source_type": "issue",
1514
+ "path": "issues/15118.json",
1515
+ "url": "https://github.com/fastapi/fastapi/issues/15118"
1516
+ },
1517
+ {
1518
+ "source_type": "issue",
1519
+ "path": "issues/14810.json",
1520
+ "url": "https://github.com/fastapi/fastapi/issues/14810"
1521
+ },
1522
+ {
1523
+ "source_type": "issue",
1524
+ "path": "issues/14508.json",
1525
+ "url": "https://github.com/fastapi/fastapi/issues/14508"
1526
+ },
1527
+ {
1528
+ "source_type": "issue",
1529
+ "path": "issues/14496.json",
1530
+ "url": "https://github.com/fastapi/fastapi/issues/14496"
1531
+ },
1532
+ {
1533
+ "source_type": "issue",
1534
+ "path": "issues/14484.json",
1535
+ "url": "https://github.com/fastapi/fastapi/issues/14484"
1536
+ },
1537
+ {
1538
+ "source_type": "issue",
1539
+ "path": "issues/14483.json",
1540
+ "url": "https://github.com/fastapi/fastapi/issues/14483"
1541
+ },
1542
+ {
1543
+ "source_type": "issue",
1544
+ "path": "issues/14467.json",
1545
+ "url": "https://github.com/fastapi/fastapi/issues/14467"
1546
+ },
1547
+ {
1548
+ "source_type": "issue",
1549
+ "path": "issues/14466.json",
1550
+ "url": "https://github.com/fastapi/fastapi/issues/14466"
1551
+ },
1552
+ {
1553
+ "source_type": "issue",
1554
+ "path": "issues/14465.json",
1555
+ "url": "https://github.com/fastapi/fastapi/issues/14465"
1556
+ },
1557
+ {
1558
+ "source_type": "issue",
1559
+ "path": "issues/14444.json",
1560
+ "url": "https://github.com/fastapi/fastapi/issues/14444"
1561
+ },
1562
+ {
1563
+ "source_type": "issue",
1564
+ "path": "issues/14431.json",
1565
+ "url": "https://github.com/fastapi/fastapi/issues/14431"
1566
+ },
1567
+ {
1568
+ "source_type": "issue",
1569
+ "path": "issues/14316.json",
1570
+ "url": "https://github.com/fastapi/fastapi/issues/14316"
1571
+ },
1572
+ {
1573
+ "source_type": "issue",
1574
+ "path": "issues/14271.json",
1575
+ "url": "https://github.com/fastapi/fastapi/issues/14271"
1576
+ },
1577
+ {
1578
+ "source_type": "issue",
1579
+ "path": "issues/14247.json",
1580
+ "url": "https://github.com/fastapi/fastapi/issues/14247"
1581
+ },
1582
+ {
1583
+ "source_type": "issue",
1584
+ "path": "issues/13111.json",
1585
+ "url": "https://github.com/fastapi/fastapi/issues/13111"
1586
+ },
1587
+ {
1588
+ "source_type": "issue",
1589
+ "path": "issues/12901.json",
1590
+ "url": "https://github.com/fastapi/fastapi/issues/12901"
1591
+ },
1592
+ {
1593
+ "source_type": "issue",
1594
+ "path": "issues/12323.json",
1595
+ "url": "https://github.com/fastapi/fastapi/issues/12323"
1596
+ },
1597
+ {
1598
+ "source_type": "issue",
1599
+ "path": "issues/12290.json",
1600
+ "url": "https://github.com/fastapi/fastapi/issues/12290"
1601
+ },
1602
+ {
1603
+ "source_type": "issue",
1604
+ "path": "issues/12017.json",
1605
+ "url": "https://github.com/fastapi/fastapi/issues/12017"
1606
+ },
1607
+ {
1608
+ "source_type": "issue",
1609
+ "path": "issues/11993.json",
1610
+ "url": "https://github.com/fastapi/fastapi/issues/11993"
1611
+ },
1612
+ {
1613
+ "source_type": "issue",
1614
+ "path": "issues/11873.json",
1615
+ "url": "https://github.com/fastapi/fastapi/issues/11873"
1616
+ },
1617
+ {
1618
+ "source_type": "issue",
1619
+ "path": "issues/15855.json",
1620
+ "url": "https://github.com/fastapi/fastapi/issues/15855"
1621
+ },
1622
+ {
1623
+ "source_type": "issue",
1624
+ "path": "issues/15844.json",
1625
+ "url": "https://github.com/fastapi/fastapi/issues/15844"
1626
+ },
1627
+ {
1628
+ "source_type": "issue",
1629
+ "path": "issues/15738.json",
1630
+ "url": "https://github.com/fastapi/fastapi/issues/15738"
1631
+ },
1632
+ {
1633
+ "source_type": "issue",
1634
+ "path": "issues/15680.json",
1635
+ "url": "https://github.com/fastapi/fastapi/issues/15680"
1636
+ },
1637
+ {
1638
+ "source_type": "issue",
1639
+ "path": "issues/15578.json",
1640
+ "url": "https://github.com/fastapi/fastapi/issues/15578"
1641
+ },
1642
+ {
1643
+ "source_type": "issue",
1644
+ "path": "issues/15538.json",
1645
+ "url": "https://github.com/fastapi/fastapi/issues/15538"
1646
+ },
1647
+ {
1648
+ "source_type": "issue",
1649
+ "path": "issues/15535.json",
1650
+ "url": "https://github.com/fastapi/fastapi/issues/15535"
1651
+ },
1652
+ {
1653
+ "source_type": "issue",
1654
+ "path": "issues/15466.json",
1655
+ "url": "https://github.com/fastapi/fastapi/issues/15466"
1656
+ },
1657
+ {
1658
+ "source_type": "issue",
1659
+ "path": "issues/15325.json",
1660
+ "url": "https://github.com/fastapi/fastapi/issues/15325"
1661
+ },
1662
+ {
1663
+ "source_type": "issue",
1664
+ "path": "issues/15324.json",
1665
+ "url": "https://github.com/fastapi/fastapi/issues/15324"
1666
+ },
1667
+ {
1668
+ "source_type": "issue",
1669
+ "path": "issues/15322.json",
1670
+ "url": "https://github.com/fastapi/fastapi/issues/15322"
1671
+ },
1672
+ {
1673
+ "source_type": "issue",
1674
+ "path": "issues/15238.json",
1675
+ "url": "https://github.com/fastapi/fastapi/issues/15238"
1676
+ },
1677
+ {
1678
+ "source_type": "issue",
1679
+ "path": "issues/15237.json",
1680
+ "url": "https://github.com/fastapi/fastapi/issues/15237"
1681
+ },
1682
+ {
1683
+ "source_type": "issue",
1684
+ "path": "issues/15236.json",
1685
+ "url": "https://github.com/fastapi/fastapi/issues/15236"
1686
+ },
1687
+ {
1688
+ "source_type": "issue",
1689
+ "path": "issues/15197.json",
1690
+ "url": "https://github.com/fastapi/fastapi/issues/15197"
1691
+ },
1692
+ {
1693
+ "source_type": "issue",
1694
+ "path": "issues/15138.json",
1695
+ "url": "https://github.com/fastapi/fastapi/issues/15138"
1696
+ },
1697
+ {
1698
+ "source_type": "issue",
1699
+ "path": "issues/15111.json",
1700
+ "url": "https://github.com/fastapi/fastapi/issues/15111"
1701
+ },
1702
+ {
1703
+ "source_type": "issue",
1704
+ "path": "issues/15085.json",
1705
+ "url": "https://github.com/fastapi/fastapi/issues/15085"
1706
+ },
1707
+ {
1708
+ "source_type": "issue",
1709
+ "path": "issues/15049.json",
1710
+ "url": "https://github.com/fastapi/fastapi/issues/15049"
1711
+ },
1712
+ {
1713
+ "source_type": "issue",
1714
+ "path": "issues/15002.json",
1715
+ "url": "https://github.com/fastapi/fastapi/issues/15002"
1716
+ },
1717
+ {
1718
+ "source_type": "issue",
1719
+ "path": "issues/15000.json",
1720
+ "url": "https://github.com/fastapi/fastapi/issues/15000"
1721
+ },
1722
+ {
1723
+ "source_type": "issue",
1724
+ "path": "issues/14989.json",
1725
+ "url": "https://github.com/fastapi/fastapi/issues/14989"
1726
+ },
1727
+ {
1728
+ "source_type": "issue",
1729
+ "path": "issues/14988.json",
1730
+ "url": "https://github.com/fastapi/fastapi/issues/14988"
1731
+ },
1732
+ {
1733
+ "source_type": "issue",
1734
+ "path": "issues/14787.json",
1735
+ "url": "https://github.com/fastapi/fastapi/issues/14787"
1736
+ },
1737
+ {
1738
+ "source_type": "issue",
1739
+ "path": "issues/14503.json",
1740
+ "url": "https://github.com/fastapi/fastapi/issues/14503"
1741
+ },
1742
+ {
1743
+ "source_type": "issue",
1744
+ "path": "issues/14502.json",
1745
+ "url": "https://github.com/fastapi/fastapi/issues/14502"
1746
+ },
1747
+ {
1748
+ "source_type": "issue",
1749
+ "path": "issues/14501.json",
1750
+ "url": "https://github.com/fastapi/fastapi/issues/14501"
1751
+ },
1752
+ {
1753
+ "source_type": "issue",
1754
+ "path": "issues/14500.json",
1755
+ "url": "https://github.com/fastapi/fastapi/issues/14500"
1756
+ },
1757
+ {
1758
+ "source_type": "issue",
1759
+ "path": "issues/14499.json",
1760
+ "url": "https://github.com/fastapi/fastapi/issues/14499"
1761
+ },
1762
+ {
1763
+ "source_type": "issue",
1764
+ "path": "issues/14498.json",
1765
+ "url": "https://github.com/fastapi/fastapi/issues/14498"
1766
+ },
1767
+ {
1768
+ "source_type": "issue",
1769
+ "path": "issues/14497.json",
1770
+ "url": "https://github.com/fastapi/fastapi/issues/14497"
1771
+ },
1772
+ {
1773
+ "source_type": "issue",
1774
+ "path": "issues/14494.json",
1775
+ "url": "https://github.com/fastapi/fastapi/issues/14494"
1776
+ },
1777
+ {
1778
+ "source_type": "issue",
1779
+ "path": "issues/14493.json",
1780
+ "url": "https://github.com/fastapi/fastapi/issues/14493"
1781
+ },
1782
+ {
1783
+ "source_type": "issue",
1784
+ "path": "issues/14312.json",
1785
+ "url": "https://github.com/fastapi/fastapi/issues/14312"
1786
+ },
1787
+ {
1788
+ "source_type": "issue",
1789
+ "path": "issues/14225.json",
1790
+ "url": "https://github.com/fastapi/fastapi/issues/14225"
1791
+ },
1792
+ {
1793
+ "source_type": "issue",
1794
+ "path": "issues/14199.json",
1795
+ "url": "https://github.com/fastapi/fastapi/issues/14199"
1796
+ },
1797
+ {
1798
+ "source_type": "issue",
1799
+ "path": "issues/14114.json",
1800
+ "url": "https://github.com/fastapi/fastapi/issues/14114"
1801
+ },
1802
+ {
1803
+ "source_type": "issue",
1804
+ "path": "issues/14078.json",
1805
+ "url": "https://github.com/fastapi/fastapi/issues/14078"
1806
+ },
1807
+ {
1808
+ "source_type": "issue",
1809
+ "path": "issues/14010.json",
1810
+ "url": "https://github.com/fastapi/fastapi/issues/14010"
1811
+ },
1812
+ {
1813
+ "source_type": "issue",
1814
+ "path": "issues/13839.json",
1815
+ "url": "https://github.com/fastapi/fastapi/issues/13839"
1816
+ },
1817
+ {
1818
+ "source_type": "issue",
1819
+ "path": "issues/13715.json",
1820
+ "url": "https://github.com/fastapi/fastapi/issues/13715"
1821
+ },
1822
+ {
1823
+ "source_type": "issue",
1824
+ "path": "issues/13316.json",
1825
+ "url": "https://github.com/fastapi/fastapi/issues/13316"
1826
+ },
1827
+ {
1828
+ "source_type": "issue",
1829
+ "path": "issues/13119.json",
1830
+ "url": "https://github.com/fastapi/fastapi/issues/13119"
1831
+ },
1832
+ {
1833
+ "source_type": "issue",
1834
+ "path": "issues/13023.json",
1835
+ "url": "https://github.com/fastapi/fastapi/issues/13023"
1836
+ },
1837
+ {
1838
+ "source_type": "issue",
1839
+ "path": "issues/12987.json",
1840
+ "url": "https://github.com/fastapi/fastapi/issues/12987"
1841
+ },
1842
+ {
1843
+ "source_type": "issue",
1844
+ "path": "issues/12963.json",
1845
+ "url": "https://github.com/fastapi/fastapi/issues/12963"
1846
+ },
1847
+ {
1848
+ "source_type": "issue",
1849
+ "path": "issues/12936.json",
1850
+ "url": "https://github.com/fastapi/fastapi/issues/12936"
1851
+ },
1852
+ {
1853
+ "source_type": "issue",
1854
+ "path": "issues/12924.json",
1855
+ "url": "https://github.com/fastapi/fastapi/issues/12924"
1856
+ },
1857
+ {
1858
+ "source_type": "issue",
1859
+ "path": "issues/12765.json",
1860
+ "url": "https://github.com/fastapi/fastapi/issues/12765"
1861
+ },
1862
+ {
1863
+ "source_type": "issue",
1864
+ "path": "issues/12497.json",
1865
+ "url": "https://github.com/fastapi/fastapi/issues/12497"
1866
+ },
1867
+ {
1868
+ "source_type": "issue",
1869
+ "path": "issues/12425.json",
1870
+ "url": "https://github.com/fastapi/fastapi/issues/12425"
1871
+ },
1872
+ {
1873
+ "source_type": "issue",
1874
+ "path": "issues/12382.json",
1875
+ "url": "https://github.com/fastapi/fastapi/issues/12382"
1876
+ },
1877
+ {
1878
+ "source_type": "issue",
1879
+ "path": "issues/12111.json",
1880
+ "url": "https://github.com/fastapi/fastapi/issues/12111"
1881
+ },
1882
+ {
1883
+ "source_type": "issue",
1884
+ "path": "issues/12039.json",
1885
+ "url": "https://github.com/fastapi/fastapi/issues/12039"
1886
+ },
1887
+ {
1888
+ "source_type": "issue",
1889
+ "path": "issues/12010.json",
1890
+ "url": "https://github.com/fastapi/fastapi/issues/12010"
1891
+ },
1892
+ {
1893
+ "source_type": "issue",
1894
+ "path": "issues/11989.json",
1895
+ "url": "https://github.com/fastapi/fastapi/issues/11989"
1896
+ },
1897
+ {
1898
+ "source_type": "issue",
1899
+ "path": "issues/11941.json",
1900
+ "url": "https://github.com/fastapi/fastapi/issues/11941"
1901
+ },
1902
+ {
1903
+ "source_type": "issue",
1904
+ "path": "issues/11812.json",
1905
+ "url": "https://github.com/fastapi/fastapi/issues/11812"
1906
+ }
1907
+ ]
1908
+ }
src/ingest.py ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ import argparse
4
+ import json
5
+ import os
6
+ import subprocess
7
+ from datetime import datetime, timedelta, timezone
8
+ from pathlib import Path
9
+
10
+ from github import Auth, Github
11
+
12
+ DATA_DIR = Path("data")
13
+
14
+ # Directories that add noise, not knowledge. Extend as you inspect results.
15
+ SKIP_DIRS = {".git", ".github", "__pycache__", "node_modules", "tests", "test",
16
+ "scripts"}
17
+ CODE_EXTS = {".py"}
18
+ DOC_EXTS = {".md"}
19
+ MAX_FILE_BYTES = 100_000 # skip generated/vendored monsters
20
+ ISSUE_LOOKBACK_DAYS = 730 # ~2 years
21
+
22
+
23
+ def clone_repo(repo: str) -> Path:
24
+ """Shallow-clone the repo into data/repo/ (we only need current state)."""
25
+ dest = DATA_DIR / "repo"
26
+ if dest.exists():
27
+ print(f"[clone] {dest} already exists, skipping clone")
28
+ return dest
29
+ url = f"https://github.com/{repo}.git"
30
+ print(f"[clone] {url} -> {dest}")
31
+ subprocess.run(["git", "clone", "--depth", "1", url, str(dest)], check=True)
32
+ return dest
33
+
34
+
35
+ def collect_files(repo_dir: Path) -> list[dict]:
36
+ """Walk the clone and collect code + doc files worth indexing."""
37
+ records = []
38
+ for path in sorted(repo_dir.rglob("*")):
39
+ if not path.is_file():
40
+ continue
41
+ rel = path.relative_to(repo_dir)
42
+ if any(part in SKIP_DIRS for part in rel.parts):
43
+ continue
44
+ # FastAPI-specific: keep only English docs, skip tutorial snippets
45
+ if rel.parts[0] == "docs" and rel.parts[1] != "en":
46
+ continue
47
+ if rel.parts[0] == "docs_src":
48
+ continue
49
+ ext = path.suffix.lower()
50
+ if ext in CODE_EXTS:
51
+ source_type = "code"
52
+ elif ext in DOC_EXTS:
53
+ source_type = "doc"
54
+ else:
55
+ continue
56
+ size = path.stat().st_size
57
+ if size == 0 or size > MAX_FILE_BYTES:
58
+ continue
59
+ records.append({
60
+ "source_type": source_type,
61
+ "path": str(rel),
62
+ "size_bytes": size,
63
+ })
64
+ return records
65
+
66
+
67
+ def fetch_issues(repo: str, max_issues: int) -> list[dict]:
68
+ """Pull recent closed issues (not PRs) and save each as JSON.
69
+
70
+ Resumable: issues already saved to disk are skipped (no API calls),
71
+ so a crashed or interrupted run can simply be re-run.
72
+ """
73
+ token = os.environ.get("GITHUB_TOKEN")
74
+ if not token:
75
+ print("[warn] no GITHUB_TOKEN set - unauthenticated limit is 60 req/hr")
76
+ gh = Github(auth=Auth.Token(token)) if token else Github()
77
+ since = datetime.now(timezone.utc) - timedelta(days=ISSUE_LOOKBACK_DAYS)
78
+ issues_dir = DATA_DIR / "issues"
79
+ issues_dir.mkdir(parents=True, exist_ok=True)
80
+
81
+ records = []
82
+ # sort="comments" surfaces the most-discussed (usually most useful) issues first
83
+ issues = gh.get_repo(repo).get_issues(state="closed", since=since,
84
+ sort="comments", direction="desc")
85
+ for issue in issues:
86
+ if issue.pull_request is not None: # PRs come through the same API; skip
87
+ continue
88
+ if len(records) >= max_issues:
89
+ break
90
+
91
+ # Resume support: skip issues already saved from a previous run
92
+ out_path = issues_dir / f"{issue.number}.json"
93
+ if out_path.exists():
94
+ records.append({"source_type": "issue",
95
+ "path": f"issues/{issue.number}.json",
96
+ "url": issue.html_url})
97
+ continue
98
+
99
+ # Keep up to 3 comments, favoring the most 👍-reacted (often the answer)
100
+ comments = []
101
+ if issue.comments > 0:
102
+ all_comments = list(issue.get_comments())
103
+ all_comments.sort(key=lambda c: c.reactions.get("+1", 0), reverse=True)
104
+ comments = [c.body for c in all_comments[:3] if c.body]
105
+
106
+ record = {
107
+ "number": issue.number,
108
+ "title": issue.title,
109
+ "body": issue.body or "",
110
+ "labels": [label.name for label in issue.labels],
111
+ "url": issue.html_url,
112
+ "comments": comments,
113
+ }
114
+ out_path.write_text(
115
+ json.dumps(record, ensure_ascii=False, indent=2), encoding="utf-8")
116
+ records.append({"source_type": "issue",
117
+ "path": f"issues/{issue.number}.json",
118
+ "url": issue.html_url})
119
+ if len(records) % 50 == 0:
120
+ print(f"[issues] fetched {len(records)}...")
121
+ return records
122
+
123
+
124
+ def main() -> None:
125
+ parser = argparse.ArgumentParser()
126
+ parser.add_argument("--repo", required=True, help="e.g. fastapi/fastapi")
127
+ parser.add_argument("--max-issues", type=int, default=300)
128
+ parser.add_argument("--skip-issues", action="store_true",
129
+ help="only clone + collect files (useful while iterating)")
130
+ args = parser.parse_args()
131
+
132
+ DATA_DIR.mkdir(exist_ok=True)
133
+ repo_dir = clone_repo(args.repo)
134
+ file_records = collect_files(repo_dir)
135
+ issue_records = [] if args.skip_issues else fetch_issues(args.repo,
136
+ args.max_issues)
137
+
138
+ manifest = {
139
+ "repo": args.repo,
140
+ "ingested_at": datetime.now(timezone.utc).isoformat(),
141
+ "files": file_records,
142
+ "issues": issue_records,
143
+ }
144
+ (DATA_DIR / "manifest.json").write_text(
145
+ json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8")
146
+
147
+ n_code = sum(1 for r in file_records if r["source_type"] == "code")
148
+ n_docs = sum(1 for r in file_records if r["source_type"] == "doc")
149
+ print(f"\n[done] {n_code} code files, {n_docs} docs, {len(issue_records)} issues")
150
+ print(f"[done] manifest -> {DATA_DIR / 'manifest.json'}")
151
+
152
+
153
+ if __name__ == "__main__":
154
+ main()
155
+