Browse Source

fmt

pull/9837/head
JONEMI21 5 months ago
parent
commit
801e0a3edb
  1. 6
      fastapi/_compat/__init__.py
  2. 27
      fastapi/dependencies/utils.py

6
fastapi/_compat/__init__.py

@ -1,9 +1,15 @@
from .shared import PYDANTIC_VERSION_MINOR_TUPLE as PYDANTIC_VERSION_MINOR_TUPLE 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 annotation_is_pydantic_v1 as annotation_is_pydantic_v1
from .shared import field_annotation_is_scalar as field_annotation_is_scalar from .shared import field_annotation_is_scalar as field_annotation_is_scalar
from .shared import (
field_annotation_is_scalar_mapping as field_annotation_is_scalar_mapping,
)
from .shared import ( from .shared import (
field_annotation_is_scalar_sequence as field_annotation_is_scalar_sequence, field_annotation_is_scalar_sequence as field_annotation_is_scalar_sequence,
) )
from .shared import (
field_annotation_is_scalar_sequence_mapping as field_annotation_is_scalar_sequence_mapping,
)
from .shared import field_annotation_is_sequence as field_annotation_is_sequence from .shared import field_annotation_is_sequence as field_annotation_is_sequence
from .shared import ( from .shared import (
is_bytes_or_nonable_bytes_annotation as is_bytes_or_nonable_bytes_annotation, is_bytes_or_nonable_bytes_annotation as is_bytes_or_nonable_bytes_annotation,

27
fastapi/dependencies/utils.py

@ -26,18 +26,16 @@ from fastapi._compat import (
evaluate_forwardref, evaluate_forwardref,
field_annotation_is_scalar, field_annotation_is_scalar,
field_annotation_is_scalar_mapping, field_annotation_is_scalar_mapping,
field_annotation_is_scalar_sequence_mapping, field_annotation_is_scalar_mapping_field,
field_annotation_is_scalar_sequence, field_annotation_is_scalar_sequence,
field_annotation_is_scalar_sequence_mapping,
field_annotation_is_scalar_sequence_mapping_field,
field_annotation_is_sequence, field_annotation_is_sequence,
get_cached_model_fields, get_cached_model_fields,
get_missing_field_error, get_missing_field_error,
is_bytes_or_nonable_bytes_annotation, is_bytes_or_nonable_bytes_annotation,
is_bytes_sequence_annotation, is_bytes_sequence_annotation,
is_scalar_field, is_scalar_field,
is_scalar_mapping_field,
is_scalar_sequence_field,
is_scalar_sequence_mapping_field,
is_sequence_field,
is_uploadfile_or_nonable_uploadfile_annotation, is_uploadfile_or_nonable_uploadfile_annotation,
is_uploadfile_sequence_annotation, is_uploadfile_sequence_annotation,
lenient_issubclass, lenient_issubclass,
@ -542,7 +540,9 @@ def analyze_param(
assert ( assert (
is_scalar_field(field) is_scalar_field(field)
or field_annotation_is_scalar_mapping_field(field.field_info.annotation) or field_annotation_is_scalar_mapping_field(field.field_info.annotation)
or field_annotation_is_scalar_sequence_mapping_field(field.field_info.annotation) or field_annotation_is_scalar_sequence_mapping_field(
field.field_info.annotation
)
or field_annotation_is_scalar_sequence(field.field_info.annotation) or field_annotation_is_scalar_sequence(field.field_info.annotation)
or lenient_issubclass(field.field_info.annotation, BaseModel) or lenient_issubclass(field.field_info.annotation, BaseModel)
), f"Query parameter {param_name!r} must be one of the supported types" ), f"Query parameter {param_name!r} must be one of the supported types"
@ -755,11 +755,17 @@ def _get_multidict_value(
value = values.getlist(alias) value = values.getlist(alias)
elif alias in values: elif alias in values:
value = values[alias] value = values[alias]
elif values and is_scalar_mapping_field(field) and isinstance(values, QueryParams): elif (
values
and field_annotation_is_scalar_mapping_field(field.field_info.annotation)
and isinstance(values, QueryParams)
):
value = dict(values) value = dict(values)
elif ( elif (
values values
and is_scalar_sequence_mapping_field(field) and field_annotation_is_scalar_sequence_mapping_field(
field.field_info.annotation
)
and isinstance(values, QueryParams) and isinstance(values, QueryParams)
): ):
value = {key: values.getlist(key) for key in values.keys()} value = {key: values.getlist(key) for key in values.keys()}
@ -868,7 +874,10 @@ def request_params_to_args(
# specified as individual fields # specified as individual fields
for field in fields: for field in fields:
if isinstance(values.get(field.name), dict) and ( if isinstance(values.get(field.name), dict) and (
is_scalar_mapping_field(field) or is_scalar_sequence_mapping_field(field) field_annotation_is_scalar_mapping_field(field.field_info.annotation)
or field_annotation_is_scalar_sequence_mapping_field(
field.field_info.annotation
)
): ):
for f_ in fields: for f_ in fields:
values[field.name].pop(f_.alias, None) values[field.name].pop(f_.alias, None)

Loading…
Cancel
Save