deepObject - v1 compat glue

This commit is contained in:
Markus Kötter 2025-10-18 18:50:32 +02:00
parent 8a9e738008
commit fc509bdc15
2 changed files with 13 additions and 7 deletions

View File

@ -1,5 +1,5 @@
import dataclasses
import collections
import dataclasses
import inspect
import re
import sys
@ -23,7 +23,7 @@ from typing import (
)
import anyio
from fastapi import params
from fastapi import params, temp_pydantic_v1_params
from fastapi._compat import (
PYDANTIC_V2,
ModelField,
@ -80,8 +80,6 @@ from starlette.responses import Response
from starlette.websockets import WebSocket
from typing_extensions import Annotated, Literal, get_args, get_origin
from .. import temp_pydantic_v1_params
multipart_not_installed_error = (
'Form data requires "python-multipart" to be installed. \n'
'You can install "python-multipart" with: \n\n'
@ -762,12 +760,16 @@ class ParameterCodec:
@staticmethod
def decode(
field_info: params.Param,
field_info: Union[params.Param, temp_pydantic_v1_params.Param],
received_params: Union[Mapping[str, Any], QueryParams, Headers],
field: ModelField,
) -> Dict[str, Any]:
fn: Callable[
[params.Param, Union[Mapping[str, Any], QueryParams, Headers], ModelField],
[
Union[params.Param, temp_pydantic_v1_params.Param],
Union[Mapping[str, Any], QueryParams, Headers],
ModelField,
],
Dict[str, Any],
]
fn = getattr(ParameterCodec, f"decode_{field_info.style}")
@ -775,7 +777,7 @@ class ParameterCodec:
@staticmethod
def decode_deepObject(
field_info: params.Param,
field_info: Union[params.Param, temp_pydantic_v1_params.Param],
received_params: Union[Mapping[str, Any], QueryParams, Headers],
field: ModelField,
) -> Dict[str, Any]:

View File

@ -59,6 +59,8 @@ class Param(FieldInfo): # type: ignore[misc]
deprecated: Union[deprecated, str, bool, None] = None,
include_in_schema: bool = True,
json_schema_extra: Union[Dict[str, Any], None] = None,
style: str = _Unset,
explode: bool = _Unset,
**extra: Any,
):
if example is not _Unset:
@ -107,6 +109,8 @@ class Param(FieldInfo): # type: ignore[misc]
use_kwargs = {k: v for k, v in kwargs.items() if v is not _Unset}
super().__init__(**use_kwargs)
self.style = style
self.explode = explode
def __repr__(self) -> str:
return f"{self.__class__.__name__}({self.default})"