summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel G. Taylor <dan@programmer-art.org>2014-08-26 10:12:38 -0700
committerDaniel G. Taylor <dan@programmer-art.org>2014-08-26 10:12:38 -0700
commit81988845b1e41d68dcb34ed1ab5dee2784a299a9 (patch)
tree46d247b2f0060092a42b03e817eb4bd93c2880e5
parent2b87583140206185e35ee3918a263081235db785 (diff)
parentd358ee4254f48031d7109dbba09df363e212523f (diff)
downloadboto-81988845b1e41d68dcb34ed1ab5dee2784a299a9.tar.gz
Merge pull request #2525 from danielgtaylor/s3-repr
Better S3 key repr support for unicode. Fixes #2525, #2516.
-rw-r--r--boto/s3/key.py10
-rw-r--r--tests/unit/s3/test_key.py6
2 files changed, 14 insertions, 2 deletions
diff --git a/boto/s3/key.py b/boto/s3/key.py
index 510326dd..ffceeb9c 100644
--- a/boto/s3/key.py
+++ b/boto/s3/key.py
@@ -136,9 +136,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
diff --git a/tests/unit/s3/test_key.py b/tests/unit/s3/test_key.py
index 7752d9cd..6f6f6430 100644
--- a/tests/unit/s3/test_key.py
+++ b/tests/unit/s3/test_key.py
@@ -1,4 +1,5 @@
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
# Copyright (c) 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved
#
# Permission is hereby granted, free of charge, to any person obtaining a
@@ -39,6 +40,11 @@ class TestS3Key(AWSMockServiceTestCase):
def default_body(self):
return "default body"
+ def test_unicode_name(self):
+ k = Key()
+ k.name = u'Österreich'
+ print(repr(k))
+
def test_when_no_restore_header_present(self):
self.set_http_response(status_code=200)
b = Bucket(self.service_connection, 'mybucket')