diff options
author | Daniel G. Taylor <dan@programmer-art.org> | 2014-08-26 10:12:38 -0700 |
---|---|---|
committer | Daniel G. Taylor <dan@programmer-art.org> | 2014-08-26 10:12:38 -0700 |
commit | 81988845b1e41d68dcb34ed1ab5dee2784a299a9 (patch) | |
tree | 46d247b2f0060092a42b03e817eb4bd93c2880e5 | |
parent | 2b87583140206185e35ee3918a263081235db785 (diff) | |
parent | d358ee4254f48031d7109dbba09df363e212523f (diff) | |
download | boto-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.py | 10 | ||||
-rw-r--r-- | tests/unit/s3/test_key.py | 6 |
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') |