@@ -80,6 +80,8 @@ async def query(
8080 maxReturnLength : Optional [int ] = 25 ,
8181 tossupPagination : Optional [int ] = 1 ,
8282 bonusPagination : Optional [int ] = 1 ,
83+ min_year : int = Year .MIN_YEAR ,
84+ max_year : int = Year .CURRENT_YEAR ,
8385 ) -> QueryResponse :
8486 """Query the qbreader database for questions.
8587
@@ -127,7 +129,10 @@ class type.
127129 The page of tossups to return.
128130 bonusPagination : int, default = 1
129131 The page of bonuses to return.
130-
132+ min_year : int, default = Year.MIN_YEAR
133+ The earliest year to search.
134+ max_year : int, default = Year.CURRENT_YEAR
135+ The latest year to search.
131136 Returns
132137 -------
133138 QueryResponse
@@ -184,6 +189,15 @@ class type.
184189 elif param < 1 :
185190 raise ValueError (f"{ name } must be at least 1." )
186191
192+ for name , year in {
193+ "minYear" : min_year ,
194+ "maxYear" : max_year ,
195+ }.items ():
196+ if not isinstance (year , int ):
197+ raise TypeError (
198+ f"{ name } must be an integer, not { type (param ).__name__ } ."
199+ )
200+
187201 url = BASE_URL + "/query"
188202
189203 (
@@ -209,6 +223,8 @@ class type.
209223 "maxReturnLength" : maxReturnLength ,
210224 "tossupPagination" : tossupPagination ,
211225 "bonusPagination" : bonusPagination ,
226+ "minYear" : min_year ,
227+ "maxYear" : max_year ,
212228 }
213229 data = api_utils .prune_none (data )
214230
0 commit comments