resolved RESOLVED UNSUBMITTED PASS ยท None tool calls ยท 0 s ยท fastapi/fastapi
๐ Fix separation of schemas with nested models introduced in 0.119.0 ๐ Fix separation of schemas with nested models introduced in 0.119.0 This should fix / related to https://github.com/fastapi/fastapi/issues/14247 (https://github.com/fastapi/fastapi/discussions/14177)
| # | Tool | Arguments | Result |
|---|---|---|---|
| No trace captured. | |||
--- a/fastapi/_compat/v2.py
+++ b/fastapi/_compat/v2.py
@@ -207,11 +207,31 @@ def get_definitions(
override_mode: Union[Literal["validation"], None] = (
None if separate_input_output_schemas else "validation"
)
- flat_models = get_flat_models_from_fields(fields, known_models=set())
- flat_model_fields = [
- ModelField(field_info=FieldInfo(annotation=model), name=model.__name__)
- for model in flat_models
+ validation_fields = [field for field in fields if field.mode == "validation"]
+ serialization_fields = [field for field in fields if field.mode == "serialization"]
+ flat_validation_models = get_flat_models_from_fields(
+ validation_fields, known_models=set()
+ )
+ flat_serialization_models = get_flat_models_from_fields(
+ serialization_fields, known_models=set()
+ )
+ flat_validation_model_fields = [
+ ModelField(
+ field_info=FieldInfo(annotation=model),
+ name=model.__name__,
+ mode="validation",
+ )
+ for model in flat_validation_models
+ ]
+ flat_serialization_model_fields = [
+ ModelField(
+ field_info=FieldInfo(annotation=model),
+ name=model.__name__,
+ mode="serialization",
+ )
+ for model in flat_serialization_models
]
+ flat_model_fields = flat_validation_model_fields + flat_serialization_model_fields
input_types = {f.type_ for f in fields}
unique_flat_model_fields = {
f for f in flat_model_fields if f.type_ not in input_types............... [100%]
=============================== warnings summary ===============================
../../../../../../../Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-0.49.3-py3-none-any/starlette/testclient.py:51
/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-0.49.3-py3-none-any/starlette/testclient.py:51: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.
_PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
15 passed, 1 warning in 0.90s