Merge "Python 3: Get compatible types from six"

This commit is contained in:
Jenkins 2014-03-30 19:48:34 +00:00 committed by Gerrit Code Review
commit 21db1bf836
3 changed files with 15 additions and 9 deletions

@ -28,6 +28,7 @@ from requests.exceptions import RequestException, SSLError
from six.moves.urllib.parse import quote as _quote from six.moves.urllib.parse import quote as _quote
from six.moves.urllib.parse import urlparse, urlunparse from six.moves.urllib.parse import urlparse, urlunparse
from time import sleep, time from time import sleep, time
import six
from swiftclient.exceptions import ClientException, InvalidHeadersException from swiftclient.exceptions import ClientException, InvalidHeadersException
from swiftclient.utils import LengthWrapper from swiftclient.utils import LengthWrapper
@ -97,7 +98,7 @@ def quote(value, safe='/'):
Patched version of urllib.quote that encodes utf8 strings before quoting Patched version of urllib.quote that encodes utf8 strings before quoting
""" """
value = encode_utf8(value) value = encode_utf8(value)
if isinstance(value, str): if isinstance(value, bytes):
return _quote(value, safe) return _quote(value, safe)
else: else:
return value return value
@ -117,7 +118,7 @@ def validate_headers(headers):
def encode_utf8(value): def encode_utf8(value):
if isinstance(value, unicode): if isinstance(value, six.text_type):
value = value.encode('utf8') value = value.encode('utf8')
return value return value

@ -14,6 +14,8 @@
# limitations under the License. # limitations under the License.
"""Miscellaneous utility functions for use with Swift.""" """Miscellaneous utility functions for use with Swift."""
import six
TRUE_VALUES = set(('true', '1', 'yes', 'on', 't', 'y')) TRUE_VALUES = set(('true', '1', 'yes', 'on', 't', 'y'))
@ -24,7 +26,7 @@ def config_true_value(value):
This function come from swift.common.utils.config_true_value() This function come from swift.common.utils.config_true_value()
""" """
return value is True or \ return value is True or \
(isinstance(value, basestring) and value.lower() in TRUE_VALUES) (isinstance(value, six.string_types) and value.lower() in TRUE_VALUES)
def prt_bytes(bytes, human_flag): def prt_bytes(bytes, human_flag):

@ -178,9 +178,9 @@ class TestHttpHelpers(MockHttpTest):
def test_quote(self): def test_quote(self):
value = 'standard string' value = 'standard string'
self.assertEqual('standard%20string', c.quote(value)) self.assertEqual(b'standard%20string', c.quote(value))
value = u'\u0075nicode string' value = u'\u0075nicode string'
self.assertEqual('unicode%20string', c.quote(value)) self.assertEqual(b'unicode%20string', c.quote(value))
def test_http_connection(self): def test_http_connection(self):
url = 'http://www.test.com' url = 'http://www.test.com'
@ -205,7 +205,10 @@ class TestHttpHelpers(MockHttpTest):
headers) headers)
def test_validate_headers_with_other_than_str(self): def test_validate_headers_with_other_than_str(self):
for t in (None, 1, 1.0, 1L, u"A"): values = [None, 1, 1.0, u"A"]
if six.PY2:
values.append(long(1))
for t in values:
self.assertEqual(c.validate_headers({'key': t}), self.assertEqual(c.validate_headers({'key': t}),
None) None)
@ -573,7 +576,7 @@ class TestPutObject(MockHttpTest):
c.http_connection = self.fake_http_connection(200) c.http_connection = self.fake_http_connection(200)
args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf') args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf')
value = c.put_object(*args) value = c.put_object(*args)
self.assertTrue(isinstance(value, basestring)) self.assertTrue(isinstance(value, six.string_types))
def test_unicode_ok(self): def test_unicode_ok(self):
conn = c.http_connection(u'http://www.test.com/') conn = c.http_connection(u'http://www.test.com/')
@ -590,7 +593,7 @@ class TestPutObject(MockHttpTest):
conn[1].getresponse = resp.fake_response conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request conn[1]._request = resp._fake_request
value = c.put_object(*args, headers=headers, http_conn=conn) value = c.put_object(*args, headers=headers, http_conn=conn)
self.assertTrue(isinstance(value, basestring)) self.assertTrue(isinstance(value, six.string_types))
# Test for RFC-2616 encoded symbols # Test for RFC-2616 encoded symbols
self.assertTrue("a-b: .x:yz mn:fg:lp" in resp.buffer[0], self.assertTrue("a-b: .x:yz mn:fg:lp" in resp.buffer[0],
"[a-b: .x:yz mn:fg:lp] header is missing") "[a-b: .x:yz mn:fg:lp] header is missing")
@ -970,7 +973,7 @@ class TestLogging(MockHttpTest):
c.http_connection = self.fake_http_connection(200) c.http_connection = self.fake_http_connection(200)
args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf') args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf')
value = c.put_object(*args) value = c.put_object(*args)
self.assertTrue(isinstance(value, basestring)) self.assertTrue(isinstance(value, six.string_types))
def test_head_error(self): def test_head_error(self):
c.http_connection = self.fake_http_connection(500) c.http_connection = self.fake_http_connection(500)