From e025c843b60e93689f0f991d753010bb5bd6a722 Mon Sep 17 00:00:00 2001 From: Brian Whitman Date: Mon, 29 May 2023 20:27:49 -0700 Subject: [PATCH] requests: Fix detection of iterators in chunked data requests. Chunked detection does not work as generators never have an `__iter__` attribute. They do have `__next__`. Example that now works with this commit: def read_in_chunks(file_object, chunk_size=4096): while True: data = file_object.read(chunk_size) if not data: break yield data file = open(filename, "rb") r = requests.post(url, data=read_in_chunks(file)) --- python-ecosys/requests/manifest.py | 2 +- python-ecosys/requests/requests/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python-ecosys/requests/manifest.py b/python-ecosys/requests/manifest.py index 7fc2d63bd..1c46a7384 100644 --- a/python-ecosys/requests/manifest.py +++ b/python-ecosys/requests/manifest.py @@ -1,3 +1,3 @@ -metadata(version="0.8.0", pypi="requests") +metadata(version="0.8.1", pypi="requests") package("requests") diff --git a/python-ecosys/requests/requests/__init__.py b/python-ecosys/requests/requests/__init__.py index 56b4a4f49..fd751e623 100644 --- a/python-ecosys/requests/requests/__init__.py +++ b/python-ecosys/requests/requests/__init__.py @@ -45,7 +45,7 @@ def request( parse_headers=True, ): redirect = None # redirection url, None means no redirection - chunked_data = data and getattr(data, "__iter__", None) and not getattr(data, "__len__", None) + chunked_data = data and getattr(data, "__next__", None) and not getattr(data, "__len__", None) if auth is not None: import ubinascii