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

@ -14,6 +14,8 @@
# limitations under the License.
"""Miscellaneous utility functions for use with Swift."""
import six
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()
"""
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):

@ -178,9 +178,9 @@ class TestHttpHelpers(MockHttpTest):
def test_quote(self):
value = 'standard string'
self.assertEqual('standard%20string', c.quote(value))
self.assertEqual(b'standard%20string', c.quote(value))
value = u'\u0075nicode string'
self.assertEqual('unicode%20string', c.quote(value))
self.assertEqual(b'unicode%20string', c.quote(value))
def test_http_connection(self):
url = 'http://www.test.com'
@ -205,7 +205,10 @@ class TestHttpHelpers(MockHttpTest):
headers)
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}),
None)
@ -573,7 +576,7 @@ class TestPutObject(MockHttpTest):
c.http_connection = self.fake_http_connection(200)
args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf')
value = c.put_object(*args)
self.assertTrue(isinstance(value, basestring))
self.assertTrue(isinstance(value, six.string_types))
def test_unicode_ok(self):
conn = c.http_connection(u'http://www.test.com/')
@ -590,7 +593,7 @@ class TestPutObject(MockHttpTest):
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
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
self.assertTrue("a-b: .x:yz mn:fg:lp" in resp.buffer[0],
"[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)
args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf')
value = c.put_object(*args)
self.assertTrue(isinstance(value, basestring))
self.assertTrue(isinstance(value, six.string_types))
def test_head_error(self):
c.http_connection = self.fake_http_connection(500)