diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index ce2c07fad3..d6e1c1cce3 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -350,7 +350,7 @@ def add_non_field_param_to_dependency( def _is_optional_type(annotation: Any) -> bool: """ Check if a type annotation is Optional (Union with None). - + Optional[X] is equivalent to Union[X, None], so we check if: 1. The origin is Union 2. NoneType is one of the union args diff --git a/tests/test_request_params/test_form/test_optional_literal_form.py b/tests/test_request_params/test_form/test_optional_literal_form.py index ce0ea0c12f..11f9916ab6 100644 --- a/tests/test_request_params/test_form/test_optional_literal_form.py +++ b/tests/test_request_params/test_form/test_optional_literal_form.py @@ -1,4 +1,5 @@ from typing import Annotated, Literal, Optional + from fastapi import FastAPI, Form from fastapi.testclient import TestClient @@ -8,9 +9,7 @@ def test_optional_literal_form_none(): app = FastAPI() @app.post("/") - async def read_main( - attribute: Annotated[Optional[Literal["abc", "def"]], Form()] - ): + async def read_main(attribute: Annotated[Optional[Literal["abc", "def"]], Form()]): return {"attribute": attribute} client = TestClient(app) @@ -26,9 +25,7 @@ def test_optional_literal_form_valid_values(): app = FastAPI() @app.post("/") - async def read_main( - attribute: Annotated[Optional[Literal["abc", "def"]], Form()] - ): + async def read_main(attribute: Annotated[Optional[Literal["abc", "def"]], Form()]): return {"attribute": attribute} client = TestClient(app) @@ -49,9 +46,7 @@ def test_optional_literal_form_invalid_value(): app = FastAPI() @app.post("/") - async def read_main( - attribute: Annotated[Optional[Literal["abc", "def"]], Form()] - ): + async def read_main(attribute: Annotated[Optional[Literal["abc", "def"]], Form()]): return {"attribute": attribute} client = TestClient(app) @@ -70,9 +65,7 @@ def test_optional_literal_form_empty_string(): app = FastAPI() @app.post("/") - async def read_main( - attribute: Annotated[Optional[Literal["abc", "def"]], Form()] - ): + async def read_main(attribute: Annotated[Optional[Literal["abc", "def"]], Form()]): return {"attribute": attribute} client = TestClient(app)