From 58dbe1e727573ffb2eb95cc811bce7f56e3b0a25 Mon Sep 17 00:00:00 2001 From: Florent Viard Date: Mon, 24 Jul 2017 11:44:49 +0200 Subject: [PATCH] Fixes #895 - Refactored py3 source to be byte-compilable with py2 to fix warnings during "setup.py install" --- S3/Custom_httplib3x.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/S3/Custom_httplib3x.py b/S3/Custom_httplib3x.py index 50448a0f..42d84228 100644 --- S3/Custom_httplib3x.py +++ S3/Custom_httplib3x.py @@ -1,6 +1,7 @@ from __future__ import absolute_import, print_function import os +import sys import http.client as httplib from http.client import (_CS_REQ_SENT, _CS_REQ_STARTED, CONTINUE, UnknownProtocol, @@ -23,14 +24,18 @@ def _encode(data, name='data'): try: return data.encode("latin-1") except UnicodeEncodeError as err: - raise UnicodeEncodeError( + # The following is equivalent to raise Exception() from None + # but is still byte-compilable compatible with python 2. + exc = UnicodeEncodeError( err.encoding, err.object, err.start, err.end, "%s (%.20r) is not valid Latin-1. Use %s.encode('utf-8') " "if you want to send it encoded in UTF-8." % - (name.title(), data[err.start:err.end], name)) from None + (name.title(), data[err.start:err.end], name)) + exc.__cause__ = None + raise exc def httpresponse_patched_begin(self): """ Re-implemented httplib begin function @@ -204,7 +209,7 @@ def httpconnection_patched_send_request(self, method, url, body, headers, elif resp.status == CONTINUE: self.wrapper_send_body(body, encode_chunked) -def httpconnection_patched_endheaders(self, message_body=None, *, encode_chunked=False): +def httpconnection_patched_endheaders(self, message_body=None, encode_chunked=False): """REIMPLEMENTED because new argument encode_chunked added after py 3.4""" """Indicate that the last header line has been sent to the server.