From ec700a9a1338975cbd340001091aa2c6d98c8988 Mon Sep 17 00:00:00 2001 From: "Rasmus Scholer (TimelineX)" Date: Wed, 4 Mar 2015 10:21:38 -0500 Subject: [PATCH] Avoid duplicating files data when creating a Request with str/bytes/bytearray in the files argument. 30-40% performance improvement. --- requests/models.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/requests/models.py b/requests/models.py index 4b2648f6..317d0ee4 100644 --- a/requests/models.py +++ b/requests/models.py @@ -143,12 +143,13 @@ class RequestEncodingMixin(object): else: fn = guess_filename(v) or k fp = v - if isinstance(fp, str): - fp = StringIO(fp) - if isinstance(fp, (bytes, bytearray)): - fp = BytesIO(fp) - rf = RequestField(name=k, data=fp.read(), + if isinstance(fp, (str, bytes, bytearray)): + fdata = fp + else: + fdata = fp.read() + + rf = RequestField(name=k, data=fdata, filename=fn, headers=fh) rf.make_multipart(content_type=ft) new_fields.append(rf)