@@ -215,6 +215,7 @@ async def my_handler(my_var: int = Depends(Query(description="desc"))):
215
215
"required" : True ,
216
216
"in" : "query" ,
217
217
"description" : "desc" ,
218
+ "schema" : {"type" : "integer" },
218
219
}
219
220
220
221
@@ -242,6 +243,7 @@ async def my_handler(my_var: Optional[int] = Depends(Query())):
242
243
"required" : False ,
243
244
"in" : "query" ,
244
245
"description" : "" ,
246
+ "schema" : {"anyOf" : [{"type" : "integer" }, {"type" : "null" }]},
245
247
}
246
248
247
249
@@ -269,6 +271,7 @@ async def my_handler(my_var: int = Depends(Query(alias="qqq"))):
269
271
"required" : True ,
270
272
"in" : "query" ,
271
273
"description" : "" ,
274
+ "schema" : {"type" : "integer" },
272
275
}
273
276
274
277
@@ -278,7 +281,13 @@ async def my_handler(my_var: int = Depends(Query(alias="qqq"))):
278
281
(
279
282
(
280
283
Query (),
281
- {"name" : "my_var" , "required" : True , "in" : "query" , "description" : "" },
284
+ {
285
+ "name" : "my_var" ,
286
+ "required" : True ,
287
+ "in" : "query" ,
288
+ "description" : "" ,
289
+ "schema" : {"type" : "integer" },
290
+ },
282
291
),
283
292
(
284
293
Query (description = "my query" ),
@@ -287,15 +296,28 @@ async def my_handler(my_var: int = Depends(Query(alias="qqq"))):
287
296
"required" : True ,
288
297
"in" : "query" ,
289
298
"description" : "my query" ,
299
+ "schema" : {"type" : "integer" },
290
300
},
291
301
),
292
302
(
293
303
Query (alias = "a" ),
294
- {"name" : "a" , "required" : True , "in" : "query" , "description" : "" },
304
+ {
305
+ "name" : "a" ,
306
+ "required" : True ,
307
+ "in" : "query" ,
308
+ "description" : "" ,
309
+ "schema" : {"type" : "integer" },
310
+ },
295
311
),
296
312
(
297
313
Header (),
298
- {"name" : "My_var" , "required" : True , "in" : "header" , "description" : "" },
314
+ {
315
+ "name" : "My_var" ,
316
+ "required" : True ,
317
+ "in" : "header" ,
318
+ "description" : "" ,
319
+ "schema" : {"type" : "integer" },
320
+ },
299
321
),
300
322
(
301
323
Header (description = "my header" ),
@@ -304,11 +326,18 @@ async def my_handler(my_var: int = Depends(Query(alias="qqq"))):
304
326
"required" : True ,
305
327
"in" : "header" ,
306
328
"description" : "my header" ,
329
+ "schema" : {"type" : "integer" },
307
330
},
308
331
),
309
332
(
310
333
Header (alias = "a" ),
311
- {"name" : "A" , "required" : True , "in" : "header" , "description" : "" },
334
+ {
335
+ "name" : "A" ,
336
+ "required" : True ,
337
+ "in" : "header" ,
338
+ "description" : "" ,
339
+ "schema" : {"type" : "integer" },
340
+ },
312
341
),
313
342
(
314
343
Path (),
@@ -318,6 +347,7 @@ async def my_handler(my_var: int = Depends(Query(alias="qqq"))):
318
347
"in" : "path" ,
319
348
"description" : "" ,
320
349
"allowEmptyValue" : False ,
350
+ "schema" : {"type" : "integer" },
321
351
},
322
352
),
323
353
(
@@ -328,6 +358,7 @@ async def my_handler(my_var: int = Depends(Query(alias="qqq"))):
328
358
"in" : "path" ,
329
359
"description" : "my path" ,
330
360
"allowEmptyValue" : False ,
361
+ "schema" : {"type" : "integer" },
331
362
},
332
363
),
333
364
(
@@ -338,6 +369,7 @@ async def my_handler(my_var: int = Depends(Query(alias="qqq"))):
338
369
"in" : "path" ,
339
370
"description" : "" ,
340
371
"allowEmptyValue" : False ,
372
+ "schema" : {"type" : "integer" },
341
373
},
342
374
),
343
375
),
@@ -364,6 +396,65 @@ async def my_handler(my_var: int = Depends(dependecy)):
364
396
assert handler_info ["parameters" ][0 ] == param_info
365
397
366
398
399
+ @pytest .mark .anyio
400
+ @pytest .mark .parametrize (
401
+ ["dependecy" , "param_info" ],
402
+ (
403
+ (
404
+ Query (),
405
+ {
406
+ "name" : "my_var" ,
407
+ "required" : False ,
408
+ "in" : "query" ,
409
+ "description" : "" ,
410
+ "schema" : {},
411
+ },
412
+ ),
413
+ (
414
+ Header (),
415
+ {
416
+ "name" : "My_var" ,
417
+ "required" : False ,
418
+ "in" : "header" ,
419
+ "description" : "" ,
420
+ "schema" : {},
421
+ },
422
+ ),
423
+ (
424
+ Path (),
425
+ {
426
+ "name" : "my_var" ,
427
+ "required" : False ,
428
+ "in" : "path" ,
429
+ "description" : "" ,
430
+ "allowEmptyValue" : True ,
431
+ "schema" : {},
432
+ },
433
+ ),
434
+ ),
435
+ )
436
+ async def test_parameters_untyped (
437
+ my_app : web .Application ,
438
+ aiohttp_client : ClientGenerator ,
439
+ dependecy : Any ,
440
+ param_info : Dict [str , Any ],
441
+ ):
442
+ OPENAPI_URL = "/my_api_def.json"
443
+ my_app .on_startup .append (setup_swagger (schema_url = OPENAPI_URL ))
444
+
445
+ async def my_handler (my_var = Depends (dependecy )):
446
+ """Nothing."""
447
+
448
+ my_app .router .add_get ("/a" , my_handler )
449
+
450
+ client = await aiohttp_client (my_app )
451
+ resp = await client .get (OPENAPI_URL )
452
+ assert resp .status == 200
453
+ resp_json = await resp .json ()
454
+ handler_info = resp_json ["paths" ]["/a" ]["get" ]
455
+ assert handler_info ["parameters" ][0 ] == param_info
456
+
457
+
367
458
@pytest .mark .anyio
368
459
async def test_view_success (
369
460
my_app : web .Application ,
0 commit comments