mirror of https://github.com/tiangolo/fastapi.git
linting
This commit is contained in:
parent
1270b764bf
commit
c543be18f0
|
|
@ -1,4 +1,4 @@
|
|||
from typing import Annotated, Dict, List
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import FastAPI, Query
|
||||
|
||||
|
|
@ -8,9 +8,9 @@ app = FastAPI()
|
|||
@app.get("/query/mixed-type-params")
|
||||
def get_mixed_mapping_mixed_type_query_params(
|
||||
query: Annotated[int, Query()] = None,
|
||||
mapping_query_str: Annotated[Dict[str, str], Query()] = None,
|
||||
mapping_query_int: Annotated[Dict[str, int], Query()] = None,
|
||||
sequence_mapping_int: Annotated[Dict[str, List[int]], Query()] = None,
|
||||
mapping_query_str: Annotated[dict[str, str], Query()] = None,
|
||||
mapping_query_int: Annotated[dict[str, int], Query()] = None,
|
||||
sequence_mapping_int: Annotated[dict[str, list[int]], Query()] = None,
|
||||
):
|
||||
return {
|
||||
"query": query,
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@ from .shared import PYDANTIC_V2 as PYDANTIC_V2
|
|||
from .shared import PYDANTIC_VERSION_MINOR_TUPLE as PYDANTIC_VERSION_MINOR_TUPLE
|
||||
from .shared import annotation_is_pydantic_v1 as annotation_is_pydantic_v1
|
||||
from .shared import field_annotation_is_scalar as field_annotation_is_scalar
|
||||
from .shared import is_pydantic_v1_model_class as is_pydantic_v1_model_class
|
||||
from .shared import is_pydantic_v1_model_instance as is_pydantic_v1_model_instance
|
||||
from .shared import (
|
||||
field_annotation_is_scalar_mapping as field_annotation_is_scalar_mapping,
|
||||
)
|
||||
from .shared import (
|
||||
field_annotation_is_scalar_sequence_mapping as field_annotation_is_scalar_sequence_mapping,
|
||||
)
|
||||
from .shared import is_pydantic_v1_model_class as is_pydantic_v1_model_class
|
||||
from .shared import is_pydantic_v1_model_instance as is_pydantic_v1_model_instance
|
||||
from .shared import (
|
||||
is_uploadfile_or_nonable_uploadfile_annotation as is_uploadfile_or_nonable_uploadfile_annotation,
|
||||
)
|
||||
|
|
@ -39,11 +39,12 @@ from .v2 import get_schema_from_model_field as get_schema_from_model_field
|
|||
from .v2 import is_bytes_field as is_bytes_field
|
||||
from .v2 import is_bytes_sequence_field as is_bytes_sequence_field
|
||||
from .v2 import is_scalar_field as is_scalar_field
|
||||
from .v2 import is_scalar_mapping_field as is_scalar_mapping_field
|
||||
from .v2 import is_scalar_sequence_field as is_scalar_sequence_field
|
||||
from .v2 import is_scalar_sequence_mapping_field as is_scalar_sequence_mapping_field
|
||||
from .v2 import is_sequence_field as is_sequence_field
|
||||
from .v2 import omit_by_default as omit_by_default
|
||||
from .v2 import serialize_sequence_value as serialize_sequence_value
|
||||
from .v2 import (
|
||||
with_info_plain_validator_function as with_info_plain_validator_function,
|
||||
)
|
||||
from .v2 import is_scalar_mapping_field as is_scalar_mapping_field
|
||||
from .v2 import is_scalar_sequence_mapping_field as is_scalar_sequence_mapping_field
|
||||
|
|
@ -5,12 +5,7 @@ from copy import copy, deepcopy
|
|||
from dataclasses import dataclass, is_dataclass
|
||||
from enum import Enum
|
||||
from functools import lru_cache
|
||||
from typing import (
|
||||
Annotated,
|
||||
Any,
|
||||
Union,
|
||||
cast,
|
||||
)
|
||||
from typing import Annotated, Any, Callable, Union, cast
|
||||
|
||||
from fastapi._compat import shared
|
||||
from fastapi.openapi.constants import REF_TEMPLATE
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ from fastapi._compat import (
|
|||
create_body_model,
|
||||
evaluate_forwardref,
|
||||
field_annotation_is_scalar,
|
||||
field_annotation_is_scalar_mapping,
|
||||
field_annotation_is_scalar_sequence_mapping,
|
||||
get_cached_model_fields,
|
||||
get_missing_field_error,
|
||||
is_bytes_field,
|
||||
|
|
@ -38,11 +40,10 @@ from fastapi._compat import (
|
|||
is_uploadfile_or_nonable_uploadfile_annotation,
|
||||
is_uploadfile_sequence_annotation,
|
||||
lenient_issubclass,
|
||||
omit_by_default,
|
||||
sequence_types,
|
||||
serialize_sequence_value,
|
||||
value_is_sequence,
|
||||
field_annotation_is_scalar_mapping,
|
||||
field_annotation_is_scalar_sequence_mapping,
|
||||
)
|
||||
from fastapi.background import BackgroundTasks
|
||||
from fastapi.concurrency import (
|
||||
|
|
@ -505,8 +506,8 @@ def analyze_param(
|
|||
field_info.alias = alias
|
||||
|
||||
# Omit by default for scalar mapping and scalar sequence mapping query fields
|
||||
class_validators: Dict[str, Callable[..., Any]] = {}
|
||||
if isinstance(field_info, (params.Query, temp_pydantic_v1_params.Query)) and (
|
||||
class_validators: dict[str, Callable[..., Any]] = {}
|
||||
if isinstance(field_info, params.Query) and (
|
||||
field_annotation_is_scalar_sequence_mapping(use_annotation_from_field_info)
|
||||
or field_annotation_is_scalar_mapping(use_annotation_from_field_info)
|
||||
):
|
||||
|
|
@ -727,10 +728,6 @@ def _validate_value_with_model_field(
|
|||
return deepcopy(field.default), []
|
||||
v_, errors_ = field.validate(value, values, loc=loc)
|
||||
|
||||
if _is_error_wrapper(errors_): # type: ignore[arg-type]
|
||||
return None, [errors_]
|
||||
elif isinstance(errors_, list):
|
||||
new_errors = may_v1._regenerate_error_with_loc(errors=errors_, loc_prefix=())
|
||||
if isinstance(errors_, list):
|
||||
new_errors = _regenerate_error_with_loc(errors=errors_, loc_prefix=())
|
||||
return None, new_errors
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
from typing import Dict, List
|
||||
|
||||
import pytest
|
||||
from fastapi import FastAPI, Query
|
||||
|
|
@ -9,5 +8,5 @@ def test_invalid_sequence():
|
|||
app = FastAPI()
|
||||
|
||||
@app.get("/items/")
|
||||
def read_items(q: Dict[str, List[List[str]]] = Query(default=None)):
|
||||
def read_items(q: dict[str, list[list[str]]] = Query(default=None)):
|
||||
pass # pragma: no cover
|
||||
|
|
|
|||
Loading…
Reference in New Issue