1- from typing import Annotated , Optional
1+ import sys
2+ from typing import Optional
23
34import pytest
45from pydantic import ConfigDict
@@ -26,18 +27,18 @@ def headers1(request, user_agent: str = Header(...)):
2627 return user_agent
2728
2829
29- @router .get ("/headers1_annotated" )
30- def headers1_annotated (request , user_agent : Annotated [str , Header (...)]):
31- return user_agent
30+ annotated_available = sys .version_info >= (3 , 9 )
3231
32+ if annotated_available :
33+ from typing import Annotated
3334
34- @router .get ("/headers2 " )
35- def headers2 (request , ua : str = Header (..., alias = "User-Agent" ) ):
36- return ua
35+ @router .get ("/headers1_annotated " )
36+ def headers1_annotated (request , user_agent : Annotated [ str , Header (...)] ):
37+ return user_agent
3738
3839
39- @router .get ("/headers2_annotated " )
40- def headers2_annotated (request , ua : Annotated [ str , Header (..., alias = "User-Agent" )] ):
40+ @router .get ("/headers2 " )
41+ def headers2 (request , ua : str = Header (..., alias = "User-Agent" )):
4142 return ua
4243
4344
@@ -46,33 +47,16 @@ def headers3(request, content_length: int = Header(...)):
4647 return content_length
4748
4849
49- @router .get ("/headers3_annotated" )
50- def headers3_annotated (request , content_length : Annotated [int , Header (...)]):
51- return content_length
52-
53-
5450@router .get ("/headers4" )
5551def headers4 (request , c_len : int = Header (..., alias = "Content-length" )):
5652 return c_len
5753
5854
59- @router .get ("/headers4_annotated" )
60- def headers4_annotated (
61- request , c_len : Annotated [int , Header (..., alias = "Content-length" )]
62- ):
63- return c_len
64-
65-
6655@router .get ("/headers5" )
6756def headers5 (request , missing : int = Header (...)):
6857 return missing
6958
7059
71- @router .get ("/headers5_annotated" )
72- def headers5_annotated (request , missing : Annotated [int , Header (...)]):
73- return missing
74-
75-
7660@router .get ("/cookies1" )
7761def cookies1 (request , weapon : str = Cookie (...)):
7862 return weapon
@@ -95,13 +79,10 @@ def schema(request, payload: ExtraForbidSchema = Body(...)):
9579 "path,expected_status,expected_response" ,
9680 [
9781 ("/headers1" , 200 , "Ninja" ),
98- ( "/headers1_annotated" , 200 , "Ninja" ),
82+ * ([( "/headers1_annotated" , 200 , "Ninja" )] if annotated_available else [] ),
9983 ("/headers2" , 200 , "Ninja" ),
100- ("/headers2_annotated" , 200 , "Ninja" ),
10184 ("/headers3" , 200 , 10 ),
102- ("/headers3_annotated" , 200 , 10 ),
10385 ("/headers4" , 200 , 10 ),
104- ("/headers4_annotated" , 200 , 10 ),
10586 (
10687 "/headers5" ,
10788 422 ,
@@ -115,19 +96,6 @@ def schema(request, payload: ExtraForbidSchema = Body(...)):
11596 ]
11697 },
11798 ),
118- (
119- "/headers5_annotated" ,
120- 422 ,
121- {
122- "detail" : [
123- {
124- "type" : "missing" ,
125- "loc" : ["header" , "missing" ],
126- "msg" : "Field required" ,
127- }
128- ]
129- },
130- ),
13199 ("/cookies1" , 200 , "shuriken" ),
132100 ("/cookies2" , 200 , "shuriken" ),
133101 ],
0 commit comments