Browse Source

fmt

pull/9837/head
JONEMI21 8 months ago
parent
commit
1121414bf2
  1. 16
      fastapi/_compat/v2.py
  2. 2
      tests/main.py
  3. 9
      tests/test_application.py

16
fastapi/_compat/v2.py

@ -510,10 +510,13 @@ if shared.PYDANTIC_VERSION_MINOR_TUPLE >= (2, 6):
def omit_by_default(field_info: FieldInfo) -> FieldInfo: def omit_by_default(field_info: FieldInfo) -> FieldInfo:
"""Set omit by default on a FieldInfo's annotation.""" """Set omit by default on a FieldInfo's annotation."""
new_annotation = _omit_by_default(field_info.annotation) new_annotation = _omit_by_default(field_info.annotation)
new_field_info = copy_field_info(field_info=field_info, annotation=new_annotation) new_field_info = copy_field_info(
field_info=field_info, annotation=new_annotation
)
return new_field_info return new_field_info
else: else:
def ignore_invalid(v: Any, handler: Callable[[Any], Any]) -> Any: def ignore_invalid(v: Any, handler: Callable[[Any], Any]) -> Any:
try: try:
return handler(v) return handler(v)
@ -531,7 +534,12 @@ else:
# Handle nested list validation errors (e.g., dict[str, list[str]]) # Handle nested list validation errors (e.g., dict[str, list[str]])
elif isinstance(loc[0], str) and isinstance(v, dict): elif isinstance(loc[0], str) and isinstance(v, dict):
key = loc[0] key = loc[0]
if len(loc) > 1 and isinstance(loc[1], int) and key in v and isinstance(v[key], list): if (
len(loc) > 1
and isinstance(loc[1], int)
and key in v
and isinstance(v[key], list)
):
list_index = loc[1] list_index = loc[1]
v[key][list_index] = None v[key][list_index] = None
elif key in v: elif key in v:
@ -549,5 +557,7 @@ else:
def omit_by_default(field_info: FieldInfo) -> FieldInfo: def omit_by_default(field_info: FieldInfo) -> FieldInfo:
"""add a wrap validator to omit invalid values by default.""" """add a wrap validator to omit invalid values by default."""
field_info.metadata = field_info.metadata or [] + [WrapValidator(ignore_invalid)] field_info.metadata = field_info.metadata or [] + [
WrapValidator(ignore_invalid)
]
return field_info return field_info

2
tests/main.py

@ -1,5 +1,5 @@
import http import http
from typing import Dict, FrozenSet, List, Optional, Union from typing import Dict, FrozenSet, List, Optional
from fastapi import FastAPI, Path, Query from fastapi import FastAPI, Path, Query

9
tests/test_application.py

@ -55,7 +55,7 @@ def test_enum_status_code_response():
def test_openapi_schema(): def test_openapi_schema():
response = client.get("/openapi.json") response = client.get("/openapi.json")
assert response.status_code == 200, response.text assert response.status_code == 200, response.text
assert response.json()["paths"] == { assert response.json() == {
"openapi": "3.1.0", "openapi": "3.1.0",
"info": {"title": "FastAPI", "version": "0.1.0"}, "info": {"title": "FastAPI", "version": "0.1.0"},
"externalDocs": { "externalDocs": {
@ -986,7 +986,10 @@ def test_openapi_schema():
"required": False, "required": False,
"schema": IsDict( "schema": IsDict(
{ {
"anyOf": [{"type": "integer"}, {"type": "null"}], "anyOf": [
{"type": "integer"},
{"type": "null"},
],
"title": "Query", "title": "Query",
} }
) )
@ -1520,4 +1523,4 @@ def test_openapi_schema():
}, },
} }
}, },
}["paths"] }

Loading…
Cancel
Save