[ARVADOS] updated: a4bc28672ca603f74cf1e386b1e054a4467bf5c2
git at public.curoverse.com
git at public.curoverse.com
Mon Feb 23 16:33:57 EST 2015
Summary of changes:
sdk/python/arvados/collection.py | 2 +-
sdk/python/arvados/keep.py | 8 +++++---
sdk/python/tests/test_keep_client.py | 13 ++++++++++---
3 files changed, 16 insertions(+), 7 deletions(-)
via a4bc28672ca603f74cf1e386b1e054a4467bf5c2 (commit)
from 7b0d3939e19b6c62effdb5c808b811b38f4ffd57 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit a4bc28672ca603f74cf1e386b1e054a4467bf5c2
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Feb 23 16:36:09 2015 -0500
4520: Coerce unicode strings to ascii in put(). Use result.content (returns
literal result bytes) instead result.text (returns unicode) when processing
Keep responses.
diff --git a/sdk/python/arvados/collection.py b/sdk/python/arvados/collection.py
index 42ee16f..7bfdf78 100644
--- a/sdk/python/arvados/collection.py
+++ b/sdk/python/arvados/collection.py
@@ -585,7 +585,7 @@ class CollectionWriter(CollectionBase):
manifest += ' ' + ' '.join("%d:%d:%s" % (sfile[0], sfile[1], sfile[2].replace(' ', '\\040')) for sfile in stream[2])
manifest += "\n"
- return manifest.encode("utf-8")
+ return manifest
def data_locators(self):
ret = []
diff --git a/sdk/python/arvados/keep.py b/sdk/python/arvados/keep.py
index c443f60..71dc7ce 100644
--- a/sdk/python/arvados/keep.py
+++ b/sdk/python/arvados/keep.py
@@ -394,11 +394,11 @@ class KeepClient(object):
replicas_stored = int(result.headers['x-keep-replicas-stored'])
except (KeyError, ValueError):
replicas_stored = 1
- limiter.save_response(result.text.strip(), replicas_stored)
+ limiter.save_response(result.content.strip(), replicas_stored)
elif status is not None:
_logger.debug("Request fail: PUT %s => %s %s",
self.args['data_hash'], status,
- self.service.last_result.text)
+ self.service.last_result.content)
def __init__(self, api_client=None, proxy=None,
@@ -685,7 +685,9 @@ class KeepClient(object):
KeepClient is initialized.
"""
- if not isinstance(data, str):
+ if isinstance(data, unicode):
+ data = data.encode("ascii")
+ elif not isinstance(data, str):
raise arvados.errors.ArgumentError("Argument 'data' to KeepClient.put must be type 'str'")
data_hash = hashlib.md5(data).hexdigest()
diff --git a/sdk/python/tests/test_keep_client.py b/sdk/python/tests/test_keep_client.py
index 7e6bb0c..6f1e2a0 100644
--- a/sdk/python/tests/test_keep_client.py
+++ b/sdk/python/tests/test_keep_client.py
@@ -76,10 +76,17 @@ class KeepTestCase(run_test_server.TestCaseWithServers):
'^d41d8cd98f00b204e9800998ecf8427e\+0',
('wrong locator from Keep.put(""): ' + blob_locator))
- def test_data_must_be_str(self):
+ def test_unicode_must_be_ascii(self):
+ # If unicode type, must only consist of valid ASCII
+ self.keep_client.put(u'foo')
+
+ with self.assertRaises(UnicodeEncodeError):
+ # Error if it is not ASCII
+ foo_locator = self.keep_client.put(u'\xe2')
+
with self.assertRaises(arvados.errors.ArgumentError):
- # Illegal to put() a unicode string.
- foo_locator = self.keep_client.put(u'foo')
+ # Must be a string type
+ foo_locator = self.keep_client.put({})
class KeepPermissionTestCase(run_test_server.TestCaseWithServers):
MAIN_SERVER = {}
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list