Browse Source

🎨 [pre-commit.ci] Auto format from pre-commit.com hooks

pull/9255/head
pre-commit-ci[bot] 3 years ago
parent
commit
cc9d9d3f13
  1. 10
      fastapi/dependencies/utils.py
  2. 4
      tests/test_invalid_mapping_param.py

10
fastapi/dependencies/utils.py

@ -40,7 +40,6 @@ from pydantic.fields import (
SHAPE_LIST, SHAPE_LIST,
SHAPE_MAPPING, SHAPE_MAPPING,
SHAPE_SEQUENCE, SHAPE_SEQUENCE,
SHAPE_MAPPING,
SHAPE_SET, SHAPE_SET,
SHAPE_SINGLETON, SHAPE_SINGLETON,
SHAPE_TUPLE, SHAPE_TUPLE,
@ -251,6 +250,7 @@ def is_scalar_sequence_field(field: ModelField) -> bool:
return True return True
return False return False
def is_scalar_mapping_field(field: ModelField) -> bool: def is_scalar_mapping_field(field: ModelField) -> bool:
if (field.shape in mapping_shapes) and not lenient_issubclass( if (field.shape in mapping_shapes) and not lenient_issubclass(
field.type_, BaseModel field.type_, BaseModel
@ -276,6 +276,7 @@ def is_scalar_sequence_mapping_field(field: ModelField) -> bool:
return True return True
return False return False
def is_scalar_mapping_field(field: ModelField) -> bool: def is_scalar_mapping_field(field: ModelField) -> bool:
if ( if (
(field.shape in mapping_shapes) (field.shape in mapping_shapes)
@ -544,9 +545,10 @@ def is_body_param(*, param_field: ModelField, is_path_param: bool) -> bool:
param_field.field_info, (params.Query, params.Header) param_field.field_info, (params.Query, params.Header)
) and is_scalar_sequence_field(param_field): ) and is_scalar_sequence_field(param_field):
return False return False
elif isinstance( elif isinstance(param_field.field_info, (params.Query, params.Header)) and (
param_field.field_info, (params.Query, params.Header) is_scalar_sequence_mapping_field(param_field)
) and (is_scalar_sequence_mapping_field(param_field) or is_scalar_mapping_field(param_field)): or is_scalar_mapping_field(param_field)
):
return False return False
else: else:
assert isinstance( assert isinstance(

4
tests/test_invalid_mapping_param.py

@ -1,15 +1,13 @@
from typing import Mapping, List from typing import List, Mapping
import pytest import pytest
from fastapi import FastAPI, Query from fastapi import FastAPI, Query
from pydantic import BaseModel
def test_invalid_sequence(): def test_invalid_sequence():
with pytest.raises(AssertionError): with pytest.raises(AssertionError):
app = FastAPI() app = FastAPI()
@app.get("/items/") @app.get("/items/")
def read_items(q: Mapping[str, List[List[str]]] = Query(default=None)): def read_items(q: Mapping[str, List[List[str]]] = Query(default=None)):
pass # pragma: no cover pass # pragma: no cover

Loading…
Cancel
Save