diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index c9f618132..a1bfe2bb1 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -22,8 +22,8 @@ from fastapi.dependencies.models import Dependant, SecurityRequirement from fastapi.security.base import SecurityBase from fastapi.security.oauth2 import OAuth2, SecurityScopes from fastapi.security.open_id_connect_url import OpenIdConnect -from fastapi.utils import UnconstrainedConfig, get_path_param_names -from pydantic import Schema, create_model +from fastapi.utils import get_path_param_names +from pydantic import BaseConfig, Schema, create_model from pydantic.error_wrappers import ErrorWrapper from pydantic.errors import MissingError from pydantic.fields import Field, Required, Shape @@ -203,8 +203,8 @@ def add_param_to_fields( default=None if required else default_value, alias=alias, required=required, - model_config=UnconstrainedConfig, - class_validators=[], + model_config=BaseConfig, + class_validators={}, schema=schema, ) if schema.in_ == params.ParamTypes.path: @@ -237,8 +237,8 @@ def add_param_to_body_fields(*, param: inspect.Parameter, dependant: Dependant) default=None if required else default_value, alias=schema.alias or param.name, required=required, - model_config=UnconstrainedConfig, - class_validators=[], + model_config=BaseConfig, + class_validators={}, schema=schema, ) dependant.body_params.append(field) @@ -336,7 +336,7 @@ def request_params_to_args( ErrorWrapper( MissingError(), loc=(schema.in_.value, field.alias), - config=UnconstrainedConfig, + config=BaseConfig, ) ) else: @@ -379,9 +379,7 @@ async def request_body_to_args( if field.required: errors.append( ErrorWrapper( - MissingError(), - loc=("body", field.alias), - config=UnconstrainedConfig, + MissingError(), loc=("body", field.alias), config=BaseConfig ) ) else: @@ -456,8 +454,8 @@ def get_body_field(*, dependant: Dependant, name: str) -> Optional[Field]: type_=BodyModel, default=None, required=required, - model_config=UnconstrainedConfig, - class_validators=[], + model_config=BaseConfig, + class_validators={}, alias="body", schema=BodySchema(None), ) diff --git a/fastapi/routing.py b/fastapi/routing.py index fe0ff6c2c..4fe622c02 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -7,8 +7,7 @@ from fastapi import params from fastapi.dependencies.models import Dependant from fastapi.dependencies.utils import get_body_field, get_dependant, solve_dependencies from fastapi.encoders import jsonable_encoder -from fastapi.utils import UnconstrainedConfig -from pydantic import BaseModel, Schema +from pydantic import BaseConfig, BaseModel, Schema from pydantic.error_wrappers import ErrorWrapper, ValidationError from pydantic.fields import Field from pydantic.utils import lenient_issubclass @@ -59,7 +58,7 @@ def get_app( if body_bytes: body = await request.json() except Exception as e: - logging.error("Error getting request body", e) + logging.error(f"Error getting request body: {e}") raise HTTPException( status_code=400, detail="There was an error parsing the body" ) @@ -126,10 +125,10 @@ class APIRoute(routing.Route): self.response_field: Optional[Field] = Field( name=response_name, type_=self.response_model, - class_validators=[], + class_validators={}, default=None, required=False, - model_config=UnconstrainedConfig, + model_config=BaseConfig, schema=Schema(None), ) else: @@ -155,7 +154,7 @@ class APIRoute(routing.Route): class_validators=None, default=None, required=False, - model_config=UnconstrainedConfig, + model_config=BaseConfig, schema=Schema(None), ) response_fields[additional_status_code] = response_field diff --git a/fastapi/utils.py b/fastapi/utils.py index 8eacb83d1..530b5eca6 100644 --- a/fastapi/utils.py +++ b/fastapi/utils.py @@ -3,17 +3,12 @@ from typing import Any, Dict, List, Sequence, Set, Type from fastapi import routing from fastapi.openapi.constants import REF_PREFIX -from pydantic import BaseConfig, BaseModel +from pydantic import BaseModel from pydantic.fields import Field from pydantic.schema import get_flat_models_from_fields, model_process_schema from starlette.routing import BaseRoute -class UnconstrainedConfig(BaseConfig): - min_anystr_length = None - max_anystr_length = None - - def get_flat_models_from_routes( routes: Sequence[Type[BaseRoute]] ) -> Set[Type[BaseModel]]: