]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
♻️ Simplify reading files in memory, do it sequentially instead of (fake) parallel...
authorSebastián Ramírez <tiangolo@gmail.com>
Tue, 10 Feb 2026 11:36:53 +0000 (03:36 -0800)
committerGitHub <noreply@github.com>
Tue, 10 Feb 2026 11:36:53 +0000 (12:36 +0100)
fastapi/dependencies/utils.py

index 80f9c76e9099d33417e9a2016ddea44f56ffb03c..23d8cd9fbf00e988639aba6755e8b9ef8d20b871 100644 (file)
@@ -1,7 +1,7 @@
 import dataclasses
 import inspect
 import sys
-from collections.abc import Coroutine, Mapping, Sequence
+from collections.abc import Mapping, Sequence
 from contextlib import AsyncExitStack, contextmanager
 from copy import copy, deepcopy
 from dataclasses import dataclass
@@ -15,7 +15,6 @@ from typing import (
     cast,
 )
 
-import anyio
 from fastapi import params
 from fastapi._compat import (
     ModelField,
@@ -903,16 +902,8 @@ async def _extract_form_body(
             # For types
             assert isinstance(value, sequence_types)
             results: list[Union[bytes, str]] = []
-
-            async def process_fn(
-                fn: Callable[[], Coroutine[Any, Any, Any]],
-            ) -> None:
-                result = await fn()
-                results.append(result)  # noqa: B023
-
-            async with anyio.create_task_group() as tg:
-                for sub_value in value:
-                    tg.start_soon(process_fn, sub_value.read)
+            for sub_value in value:
+                results.append(await sub_value.read())
             value = serialize_sequence_value(field=field, value=results)
         if value is not None:
             values[get_validation_alias(field)] = value