From 9889182d5065f7979a199e5be471bce709db33f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Mon, 3 Jul 2023 21:37:04 +0200 Subject: [PATCH] =?UTF-8?q?=E2=8F=AA=EF=B8=8F=20Revert=20usage=20of=20cust?= =?UTF-8?q?om=20logic=20for=20TypeAdapter=20JSON=20Schema,=20solved=20on?= =?UTF-8?q?=20the=20Pydantic=20side=20(#9787)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⏪️ Revert usage of custom logic for TypeAdapter JSON Schema, solved on Pydantic side --- fastapi/_compat.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/fastapi/_compat.py b/fastapi/_compat.py index a3b46830c..85a017fc0 100644 --- a/fastapi/_compat.py +++ b/fastapi/_compat.py @@ -101,9 +101,6 @@ if PYDANTIC_V2: self._type_adapter: TypeAdapter[Any] = TypeAdapter( Annotated[self.field_info.annotation, self.field_info] ) - self._field_info_core_schema = TypeAdapter.model_field_schema( - name=self.name, field=self.field_info - ) def get_default(self) -> Any: if self.field_info.is_required(): @@ -183,7 +180,7 @@ if PYDANTIC_V2: model_name_map: ModelNameMap, ) -> Dict[str, Any]: # This expects that GenerateJsonSchema was already used to generate the definitions - json_schema = schema_generator.generate_inner(field._field_info_core_schema) + json_schema = schema_generator.generate_inner(field._type_adapter.core_schema) if "$ref" not in json_schema: # TODO remove when deprecating Pydantic v1 # Ref: https://github.com/pydantic/pydantic/blob/d61792cc42c80b13b23e3ffa74bc37ec7c77f7d1/pydantic/schema.py#L207 @@ -202,12 +199,7 @@ if PYDANTIC_V2: model_name_map: ModelNameMap, ) -> Dict[str, Dict[str, Any]]: inputs = [ - ( - field, - "validation", - TypeAdapter.model_field_schema(name=field.name, field=field.field_info), - ) - for field in fields + (field, "validation", field._type_adapter.core_schema) for field in fields ] _, definitions = schema_generator.generate_definitions(inputs=inputs) # type: ignore[arg-type] return definitions # type: ignore[return-value]