mirror of https://github.com/tiangolo/fastapi.git
♻️ Update Pydantic usage, types, values, minor structure changes (#164)
This commit is contained in:
parent
61dd36a945
commit
546d233dec
|
|
@ -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),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]]:
|
||||
|
|
|
|||
Loading…
Reference in New Issue