diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index b4f1938b4..2f0b806ec 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -733,11 +733,23 @@ async def solve_dependencies( ) -def _allows_none(field: ModelField) -> bool: - origin = get_origin(field.type_) - return (origin is Union or origin is types.UnionType) and type(None) in get_args( - field.type_ - ) +if PYDANTIC_V2: + if sys.hexversion >= 0x30A00000: + + def _allows_none(field: ModelField) -> bool: + origin = get_origin(field.type_) + return (origin is Union or origin is types.UnionType) and type( + None + ) in get_args(field.type_) + else: + + def _allows_none(field: ModelField) -> bool: + origin = get_origin(field.type_) + return origin is Union and type(None) in get_args(field.type_) +else: + + def _allows_none(field: ModelField) -> bool: + return field.allow_none def _validate_value_with_model_field( diff --git a/tests/test_none_passed_when_null_received.py b/tests/test_none_passed_when_null_received.py index 4d1b3b0a8..51d3991f0 100644 --- a/tests/test_none_passed_when_null_received.py +++ b/tests/test_none_passed_when_null_received.py @@ -10,7 +10,7 @@ DEFAULT = 1234567890 endpoints = [] -if sys.hexversion >= 0x31000000: +if sys.hexversion >= 0x30A0000: from typing import Annotated @app.post("/api1") @@ -22,7 +22,7 @@ if sys.hexversion >= 0x31000000: endpoints.append("/api1") -if sys.hexversion >= 0x30900000: +if sys.hexversion >= 0x3090000: from typing import Annotated @app.post("/api2")