From: Tom Christie Date: Mon, 2 Mar 2020 10:34:04 +0000 (+0000) Subject: Don't support broken dict-of-dicts case for data argument (#811) X-Git-Tag: 0.12.0~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3333152b54654a438d5a8f7d0c36890a282b8eae;p=thirdparty%2Fhttpx.git Don't support broken dict-of-dicts case for data argument (#811) --- diff --git a/httpx/_content_streams.py b/httpx/_content_streams.py index ca483268..1d351677 100644 --- a/httpx/_content_streams.py +++ b/httpx/_content_streams.py @@ -291,7 +291,7 @@ class MultipartStream(ContentStream): self, data: dict, files: dict ) -> typing.Iterator[typing.Union["FileField", "DataField"]]: for name, value in data.items(): - if isinstance(value, (list, dict)): + if isinstance(value, list): for item in value: yield self.DataField(name=name, value=item) else: diff --git a/tests/test_multipart.py b/tests/test_multipart.py index a08ada80..3df19fe1 100644 --- a/tests/test_multipart.py +++ b/tests/test_multipart.py @@ -99,8 +99,7 @@ def test_multipart_encode(): "a": "1", "b": b"C", "c": ["11", "22", "33"], - "d": {"ff": ["1", b"2", "3"], "fff": ["11", b"22", "33"]}, - "f": "", + "d": "", } files = {"file": ("name.txt", io.BytesIO(b""))} @@ -114,9 +113,7 @@ def test_multipart_encode(): '--{0}\r\nContent-Disposition: form-data; name="c"\r\n\r\n11\r\n' '--{0}\r\nContent-Disposition: form-data; name="c"\r\n\r\n22\r\n' '--{0}\r\nContent-Disposition: form-data; name="c"\r\n\r\n33\r\n' - '--{0}\r\nContent-Disposition: form-data; name="d"\r\n\r\nff\r\n' - '--{0}\r\nContent-Disposition: form-data; name="d"\r\n\r\nfff\r\n' - '--{0}\r\nContent-Disposition: form-data; name="f"\r\n\r\n\r\n' + '--{0}\r\nContent-Disposition: form-data; name="d"\r\n\r\n\r\n' '--{0}\r\nContent-Disposition: form-data; name="file";' ' filename="name.txt"\r\n' "Content-Type: text/plain\r\n\r\n\r\n"