From: Rasmus Scholer (TimelineX) Date: Wed, 4 Mar 2015 15:21:38 +0000 (-0500) Subject: Avoid duplicating files data when creating a Request with str/bytes/bytearray in... X-Git-Tag: v2.6.0~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ec700a9a1338975cbd340001091aa2c6d98c8988;p=services%2Fpython-requests.git Avoid duplicating files data when creating a Request with str/bytes/bytearray in the files argument. 30-40% performance improvement. --- diff --git a/requests/models.py b/requests/models.py index 4b2648f..317d0ee 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)