From: Sebastián Ramírez Date: Sun, 30 Dec 2018 17:43:34 +0000 (+0400) Subject: :bug: Fix Python 3.7 specific list query handling X-Git-Tag: v0.1.16~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=60599bad99dc4e2278c8fcf20c85c4afb4b0ca54;p=thirdparty%2Ffastapi%2Ffastapi.git :bug: Fix Python 3.7 specific list query handling --- diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index a9da99c3e8..7dddae3c29 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -3,7 +3,7 @@ import inspect from copy import deepcopy from datetime import date, datetime, time, timedelta from decimal import Decimal -from typing import Any, Callable, Dict, List, Mapping, Sequence, Set, Tuple, Type, Union +from typing import Any, Callable, Dict, List, Mapping, Sequence, Tuple, Type, Union from uuid import UUID from fastapi import params @@ -107,10 +107,18 @@ def get_dependant(*, path: str, call: Callable, name: str = None) -> Dependant: ) elif isinstance(param.default, params.Param): if param.annotation != param.empty: - assert lenient_issubclass( - param.annotation, - param_supported_types + (List, Tuple, Set, list, tuple, set), - ), f"Parameters for Path, Query, Header and Cookies must be of type str, int, float, bool, list, tuple or set: {param}" + origin = getattr(param.annotation, "__origin__", None) + param_all_types = param_supported_types + (list, tuple, set) + if isinstance(param.default, (params.Query, params.Header)): + assert lenient_issubclass( + param.annotation, param_all_types + ) or lenient_issubclass( + origin, param_all_types + ), f"Parameters for Query and Header must be of type str, int, float, bool, list, tuple or set: {param}" + else: + assert lenient_issubclass( + param.annotation, param_supported_types + ), f"Parameters for Path and Cookies must be of type str, int, float, bool: {param}" add_param_to_fields( param=param, dependant=dependant, default_schema=params.Query ) diff --git a/fastapi/openapi/models.py b/fastapi/openapi/models.py index 72331eebcb..6572c7c072 100644 --- a/fastapi/openapi/models.py +++ b/fastapi/openapi/models.py @@ -322,7 +322,7 @@ class OpenIdConnect(SecurityBase): openIdConnectUrl: str -SecurityScheme = Union[APIKey, HTTPBase, HTTPBearer, OAuth2, OpenIdConnect] +SecurityScheme = Union[APIKey, HTTPBase, OAuth2, OpenIdConnect, HTTPBearer] class Components(BaseModel):