diff --git a/fastapi/_compat.py b/fastapi/_compat.py index 0e1fa96af..467101608 100644 --- a/fastapi/_compat.py +++ b/fastapi/_compat.py @@ -17,7 +17,7 @@ from typing import ( ) from fastapi.exceptions import RequestErrorModel -from fastapi.types import FFQuery, IncEx, ModelNameMap, UnionType +from fastapi.types import IncEx, ModelNameMap, UnionType from pydantic import BaseModel, create_model from pydantic.version import VERSION as PYDANTIC_VERSION from starlette.datastructures import UploadFile @@ -43,7 +43,8 @@ sequence_annotation_to_type = { sequence_types = tuple(sequence_annotation_to_type.keys()) mapping_annotation_to_type = { - FFQuery: list, + Dict: list, + dict: list, } mapping_types = tuple(mapping_annotation_to_type.keys()) @@ -366,7 +367,7 @@ else: mapping_shapes = { SHAPE_MAPPING, } - mapping_shapes_to_type = {SHAPE_MAPPING: FFQuery} + mapping_shapes_to_type = {SHAPE_MAPPING: Dict} @dataclass class GenerateJsonSchema: # type: ignore[no-redef] diff --git a/fastapi/types.py b/fastapi/types.py index 58b94e9bd..3205654c7 100644 --- a/fastapi/types.py +++ b/fastapi/types.py @@ -8,7 +8,3 @@ DecoratedCallable = TypeVar("DecoratedCallable", bound=Callable[..., Any]) UnionType = getattr(types, "UnionType", Union) ModelNameMap = Dict[Union[Type[BaseModel], Type[Enum]], str] IncEx = Union[Set[int], Set[str], Dict[int, Any], Dict[str, Any]] - - -class FFQuery(Dict[str, Union[str, IncEx]]): - pass diff --git a/tests/main.py b/tests/main.py index f1db57ac4..b4677b2a9 100644 --- a/tests/main.py +++ b/tests/main.py @@ -1,8 +1,7 @@ import http -from typing import FrozenSet, List, Optional, Union +from typing import FrozenSet, List, Optional, Union, Dict from fastapi import FastAPI, Path, Query -from fastapi.types import FFQuery app = FastAPI() @@ -186,19 +185,19 @@ def get_query_param_required_type(query: int = Query()): @app.get("/query/mapping-params") -def get_mapping_query_params(queries: FFQuery[str, str] = Query({})): +def get_mapping_query_params(queries: Dict[str, str] = Query({})): return f"foo bar {queries['foo']} {queries['bar']}" @app.get("/query/mapping-sequence-params") -def get_sequence_mapping_query_params(queries: FFQuery[str, List[int]] = Query({})): +def get_sequence_mapping_query_params(queries: Dict[str, List[int]] = Query({})): return f"foo bar {dict(queries)}" @app.get("/query/mixed-params") def get_mixed_mapping_query_params( - sequence_mapping_queries: FFQuery[str, List[Union[str, int]]] = Query({}), - mapping_query: FFQuery[str, str] = Query(), + sequence_mapping_queries: Dict[str, List[Union[str, int]]] = Query({}), + mapping_query: Dict[str, str] = Query(), query: str = Query(), ): return ( @@ -209,9 +208,9 @@ def get_mixed_mapping_query_params( @app.get("/query/mixed-type-params") def get_mixed_mapping_mixed_type_query_params( - sequence_mapping_queries: FFQuery[str, List[int]] = Query({}), - mapping_query_str: FFQuery[str, str] = Query({}), - mapping_query_int: FFQuery[str, int] = Query({}), + sequence_mapping_queries: Dict[str, List[int]] = Query({}), + mapping_query_str: Dict[str, str] = Query({}), + mapping_query_int: Dict[str, int] = Query({}), query: int = Query(), ): return f"foo bar {query} {mapping_query_str} {mapping_query_int} {dict(sequence_mapping_queries)}" diff --git a/tests/test_invalid_mapping_param.py b/tests/test_invalid_mapping_param.py index 2d0913e6d..891793961 100644 --- a/tests/test_invalid_mapping_param.py +++ b/tests/test_invalid_mapping_param.py @@ -2,7 +2,6 @@ from typing import List import pytest from fastapi import FastAPI, Query -from fastapi.types import FFQuery def test_invalid_sequence(): @@ -10,5 +9,5 @@ def test_invalid_sequence(): app = FastAPI() @app.get("/items/") - def read_items(q: FFQuery[str, List[List[str]]] = Query(default=None)): + def read_items(q: Dict[str, List[List[str]]] = Query(default=None)): pass # pragma: no cover