Browse code

unicode fixes for put <unicodename> s3://<bucket>/<unicodename>

Matt Domsch authored on 2014/03/27 02:10:53
Showing 2 changed files
... ...
@@ -75,7 +75,7 @@ class S3UriS3(S3Uri):
75 75
         return bool(self._object)
76 76
 
77 77
     def uri(self):
78
-        return "/".join(["s3:/", self._bucket, self._object])
78
+        return u"/".join([u"s3:/", self._bucket, self._object])
79 79
 
80 80
     def is_dns_compatible(self):
81 81
         return check_bucket_name_dns_conformity(self._bucket)
... ...
@@ -9,7 +9,7 @@
9 9
 import sys
10 10
 
11 11
 if float("%d.%d" %(sys.version_info[0], sys.version_info[1])) < 2.4:
12
-    sys.stderr.write("ERROR: Python 2.4 or higher required, sorry.\n")
12
+    sys.stderr.write(u"ERROR: Python 2.4 or higher required, sorry.\n")
13 13
     sys.exit(1)
14 14
 
15 15
 import logging
... ...
@@ -298,7 +298,7 @@ def cmd_object_put(args):
298 298
     destination_base_uri = S3Uri(args.pop())
299 299
     if destination_base_uri.type != 's3':
300 300
         raise ParameterError("Destination must be S3Uri. Got: %s" % destination_base_uri)
301
-    destination_base = str(destination_base_uri)
301
+    destination_base = unicode(destination_base_uri)
302 302
 
303 303
     if len(args) == 0:
304 304
         raise ParameterError("Nothing to upload. Expecting a local file or directory.")
... ...
@@ -2347,7 +2347,7 @@ def main():
2347 2347
         sys.exit(1)
2348 2348
 
2349 2349
 def report_exception(e, msg=''):
2350
-        sys.stderr.write("""
2350
+        sys.stderr.write(u"""
2351 2351
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2352 2352
     An unexpected error has occurred.
2353 2353
   Please try reproducing the error using
... ...
@@ -2362,20 +2362,20 @@ def report_exception(e, msg=''):
2362 2362
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2363 2363
 
2364 2364
 """ % msg)
2365
-        s = ' '.join(sys.argv)
2366
-        sys.stderr.write("""Invoked as: %s""" % s)
2365
+        s = u' '.join([unicodise(a) for a in sys.argv])
2366
+        sys.stderr.write(u"Invoked as: %s\n" % s)
2367 2367
 
2368 2368
         tb = traceback.format_exc(sys.exc_info())
2369 2369
         e_class = str(e.__class__)
2370 2370
         e_class = e_class[e_class.rfind(".")+1 : -2]
2371 2371
         sys.stderr.write(u"Problem: %s: %s\n" % (e_class, e))
2372 2372
         try:
2373
-            sys.stderr.write("S3cmd:   %s\n" % PkgInfo.version)
2373
+            sys.stderr.write(u"S3cmd:   %s\n" % PkgInfo.version)
2374 2374
         except NameError:
2375
-            sys.stderr.write("S3cmd:   unknown version. Module import problem?\n")
2376
-        sys.stderr.write("python:   %s\n" % sys.version)
2377
-        sys.stderr.write("environment LANG=%s\n" % os.getenv("LANG"))
2378
-        sys.stderr.write("\n")
2375
+            sys.stderr.write(u"S3cmd:   unknown version. Module import problem?\n")
2376
+        sys.stderr.write(u"python:   %s\n" % sys.version)
2377
+        sys.stderr.write(u"environment LANG=%s\n" % os.getenv("LANG"))
2378
+        sys.stderr.write(u"\n")
2379 2379
         sys.stderr.write(unicode(tb, errors="replace"))
2380 2380
 
2381 2381
         if type(e) == ImportError: