mirror of
https://github.com/fastapi/fastapi.git
synced 2026-04-29 03:04:49 -04:00
🐛 Fix truncating the model's description with form feed (\f) character for Pydantic V2 (#13698)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -16,6 +16,7 @@ from typing import (
|
||||
Tuple,
|
||||
Type,
|
||||
Union,
|
||||
cast,
|
||||
)
|
||||
|
||||
from fastapi.exceptions import RequestErrorModel
|
||||
@@ -231,6 +232,10 @@ if PYDANTIC_V2:
|
||||
field_mapping, definitions = schema_generator.generate_definitions(
|
||||
inputs=inputs
|
||||
)
|
||||
for item_def in cast(Dict[str, Dict[str, Any]], definitions).values():
|
||||
if "description" in item_def:
|
||||
item_description = cast(str, item_def["description"]).split("\f")[0]
|
||||
item_def["description"] = item_description
|
||||
return field_mapping, definitions # type: ignore[return-value]
|
||||
|
||||
def is_scalar_field(field: ModelField) -> bool:
|
||||
|
||||
31
tests/test_openapi_model_description_trim_on_formfeed.py
Normal file
31
tests/test_openapi_model_description_trim_on_formfeed.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
from pydantic import BaseModel
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
class MyModel(BaseModel):
|
||||
"""
|
||||
A model with a form feed character in the title.
|
||||
\f
|
||||
Text after form feed character.
|
||||
"""
|
||||
|
||||
|
||||
@app.get("/foo")
|
||||
def foo(v: MyModel): # pragma: no cover
|
||||
pass
|
||||
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
|
||||
def test_openapi():
|
||||
response = client.get("/openapi.json")
|
||||
assert response.status_code == 200, response.text
|
||||
openapi_schema = response.json()
|
||||
|
||||
assert openapi_schema["components"]["schemas"]["MyModel"]["description"] == (
|
||||
"A model with a form feed character in the title.\n"
|
||||
)
|
||||
Reference in New Issue
Block a user