11"""Api request/response models."""
22
3- from typing import List , Literal , Optional , Type , Union
3+ from typing import List , Literal , Optional , Type , Union , cast
44
55import attr
66from fastapi import Path , Query
2424 import orjson # noqa
2525 from fastapi .responses import ORJSONResponse as JSONResponse
2626except ImportError : # pragma: nocover
27- from starlette .responses import JSONResponse # type: ignore
27+ from starlette .responses import JSONResponse # type: ignore [assignment]
2828
2929
3030def create_request_model (
@@ -49,43 +49,47 @@ def create_request_model(
4949
5050 # Handle GET requests
5151 if all ([issubclass (m , APIRequest ) for m in models ]):
52- return attr .make_class (model_name , attrs = {}, bases = tuple (models ))
52+ get_model = attr .make_class (model_name , attrs = {}, bases = tuple (models ))
53+ return cast (Type [APIRequest ], get_model )
5354
5455 # Handle POST requests
5556 elif all ([issubclass (m , BaseModel ) for m in models ]):
5657 for model in models :
5758 for k , field_info in model .model_fields .items (): # type: ignore
5859 fields [k ] = (field_info .annotation , field_info )
5960
60- return create_model (model_name , ** fields , __base__ = base_model ) # type: ignore
61+ post_model = create_model (model_name , ** fields , __base__ = base_model ) # type: ignore
62+ return cast (Type [BaseModel ], post_model )
6163
6264 raise TypeError ("Mixed Request Model types. Check extension request types." )
6365
6466
6567def create_get_request_model (
6668 extensions : Optional [List [ApiExtension ]],
67- base_model : Type [BaseSearchGetRequest ] = BaseSearchGetRequest ,
69+ base_model : Type [APIRequest ] = BaseSearchGetRequest ,
6870) -> Type [APIRequest ]:
6971 """Wrap create_request_model to create the GET request model."""
70- return create_request_model ( # type: ignore
72+ model = create_request_model (
7173 "SearchGetRequest" ,
7274 base_model = base_model ,
7375 extensions = extensions ,
7476 request_type = "GET" ,
7577 )
78+ return cast (Type [APIRequest ], model )
7679
7780
7881def create_post_request_model (
7982 extensions : Optional [List [ApiExtension ]],
80- base_model : Type [BaseSearchPostRequest ] = BaseSearchPostRequest ,
83+ base_model : Type [BaseModel ] = BaseSearchPostRequest ,
8184) -> Type [BaseModel ]:
8285 """Wrap create_request_model to create the POST request model."""
83- return create_request_model ( # type: ignore
86+ model = create_request_model (
8487 "SearchPostRequest" ,
8588 base_model = base_model ,
8689 extensions = extensions ,
8790 request_type = "POST" ,
8891 )
92+ return cast (Type [BaseModel ], model )
8993
9094
9195@attr .s
@@ -121,7 +125,7 @@ class ItemCollectionUri(APIRequest, DatetimeMixin):
121125 description = "Limits the number of results that are included in each page of the response (capped to 10_000)." # noqa: E501
122126 ),
123127 ] = attr .ib (default = 10 )
124- bbox : Optional [BBox ] = attr .ib (default = None , converter = _bbox_converter ) # type: ignore
128+ bbox : Optional [BBox ] = attr .ib (default = None , converter = _bbox_converter ) # type: ignore [misc]
125129 datetime : DateTimeQueryType = attr .ib (default = None , validator = _validate_datetime )
126130
127131
0 commit comments