From d5a0eaf59a3a00915a998c477d67e7f75047d019 Mon Sep 17 00:00:00 2001 From: Sam Bull Date: Sun, 29 Sep 2024 13:59:21 +0100 Subject: [PATCH] Add default_to_mulitpart parameter (#9335) Co-authored-by: Yevhenii Hyzyla (cherry picked from commit d9a9368f0923e1447231880075271e7fe38683d8) --- CHANGES/9335.feature.rst | 1 + aiohttp/formdata.py | 4 +++- tests/test_formdata.py | 12 ++++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 CHANGES/9335.feature.rst diff --git a/CHANGES/9335.feature.rst b/CHANGES/9335.feature.rst new file mode 100644 index 00000000000..9a2e0684b44 --- /dev/null +++ b/CHANGES/9335.feature.rst @@ -0,0 +1 @@ +Added ``default_to_multipart`` parameter to ``FormData``. diff --git a/aiohttp/formdata.py b/aiohttp/formdata.py index 39ca8539acc..73056f4bc45 100644 --- a/aiohttp/formdata.py +++ b/aiohttp/formdata.py @@ -23,10 +23,12 @@ def __init__( fields: Iterable[Any] = (), quote_fields: bool = True, charset: Optional[str] = None, + *, + default_to_multipart: bool = False, ) -> None: self._writer = multipart.MultipartWriter("form-data") self._fields: List[Any] = [] - self._is_multipart = False + self._is_multipart = default_to_multipart self._is_processed = False self._quote_fields = quote_fields self._charset = charset diff --git a/tests/test_formdata.py b/tests/test_formdata.py index db1a3861c56..4b7c94ac4cd 100644 --- a/tests/test_formdata.py +++ b/tests/test_formdata.py @@ -22,14 +22,22 @@ async def write(chunk): return writer -def test_formdata_multipart(buf, writer) -> None: - form = FormData() +def test_formdata_multipart(buf: bytearray) -> None: + form = FormData(default_to_multipart=False) assert not form.is_multipart form.add_field("test", b"test", filename="test.txt") assert form.is_multipart +def test_form_data_is_multipart_param(buf: bytearray) -> None: + form = FormData(default_to_multipart=True) + assert form.is_multipart + + form.add_field("test", "test") + assert form.is_multipart + + def test_invalid_formdata_payload() -> None: form = FormData() form.add_field("test", object(), filename="test.txt")