diff options
author | Daniel G. Taylor <danielgtaylor@gmail.com> | 2014-08-14 13:38:50 -0700 |
---|---|---|
committer | Daniel G. Taylor <danielgtaylor@gmail.com> | 2014-08-14 13:38:50 -0700 |
commit | d358ee4254f48031d7109dbba09df363e212523f (patch) | |
tree | b782349aa760fd9362a028834514bdfe94d10b46 /boto | |
parent | 3cbbc21b61852738adbeda837588b60b5857ce68 (diff) | |
download | boto-d358ee4254f48031d7109dbba09df363e212523f.tar.gz |
Better S3 key repr support for unicode
This ensures that S3 `Key` objects always return a `str` type from the
`__repr__` method. On Python 3 this is essentially a no-op, but on Python
2 this means encoding the unicode characters before display. It fixes
the exception raised in #2516.
Diffstat (limited to 'boto')
-rw-r--r-- | boto/s3/key.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/boto/s3/key.py b/boto/s3/key.py index 9674d356..48066c02 100644 --- a/boto/s3/key.py +++ b/boto/s3/key.py @@ -130,9 +130,15 @@ class Key(object): def __repr__(self): if self.bucket: - return '<Key: %s,%s>' % (self.bucket.name, self.name) + name = u'<Key: %s,%s>' % (self.bucket.name, self.name) else: - return '<Key: None,%s>' % self.name + name = u'<Key: None,%s>' % self.name + + # Encode to bytes for Python 2 to prevent display decoding issues + if not isinstance(name, str): + name = name.encode('utf-8') + + return name def __iter__(self): return self |