浏览代码

HUE-4737 [core] Upgrade boto to 2.42.0

Jenny Kim 9 年之前
父节点
当前提交
7c63c63
共有 100 个文件被更改,包括 123 次插入95 次删除
  1. 0 8
      desktop/core/ext-py/boto-2.38.0/HUE-BUILD.rst
  2. 0 0
      desktop/core/ext-py/boto-2.42.0/.gitignore
  3. 0 0
      desktop/core/ext-py/boto-2.42.0/MANIFEST.in
  4. 21 14
      desktop/core/ext-py/boto-2.42.0/PKG-INFO
  5. 20 13
      desktop/core/ext-py/boto-2.42.0/README.rst
  6. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/asadmin
  7. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/bundle_image
  8. 1 1
      desktop/core/ext-py/boto-2.42.0/bin/cfadmin
  9. 2 2
      desktop/core/ext-py/boto-2.42.0/bin/cq
  10. 1 1
      desktop/core/ext-py/boto-2.42.0/bin/cwutil
  11. 2 1
      desktop/core/ext-py/boto-2.42.0/bin/dynamodb_dump
  12. 2 1
      desktop/core/ext-py/boto-2.42.0/bin/dynamodb_load
  13. 2 1
      desktop/core/ext-py/boto-2.42.0/bin/elbadmin
  14. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/fetch_file
  15. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/glacier
  16. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/instance_events
  17. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/kill_instance
  18. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/launch_instance
  19. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/list_instances
  20. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/lss3
  21. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/mturk
  22. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/pyami_sendmail
  23. 1 1
      desktop/core/ext-py/boto-2.42.0/bin/route53
  24. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/s3put
  25. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/sdbadmin
  26. 0 0
      desktop/core/ext-py/boto-2.42.0/bin/taskadmin
  27. 1 1
      desktop/core/ext-py/boto-2.42.0/boto/__init__.py
  28. 12 8
      desktop/core/ext-py/boto-2.42.0/boto/auth.py
  29. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/auth_handler.py
  30. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/awslambda/__init__.py
  31. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/awslambda/exceptions.py
  32. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/awslambda/layer1.py
  33. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/beanstalk/__init__.py
  34. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/beanstalk/exception.py
  35. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/beanstalk/layer1.py
  36. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/beanstalk/response.py
  37. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/beanstalk/wrapper.py
  38. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cacerts/__init__.py
  39. 0 32
      desktop/core/ext-py/boto-2.42.0/boto/cacerts/cacerts.txt
  40. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudformation/__init__.py
  41. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudformation/connection.py
  42. 9 1
      desktop/core/ext-py/boto-2.42.0/boto/cloudformation/stack.py
  43. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudformation/template.py
  44. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/__init__.py
  45. 2 2
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/distribution.py
  46. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/exception.py
  47. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/identity.py
  48. 2 2
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/invalidation.py
  49. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/logging.py
  50. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/object.py
  51. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/origin.py
  52. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudfront/signers.py
  53. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudhsm/__init__.py
  54. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudhsm/exceptions.py
  55. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudhsm/layer1.py
  56. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/__init__.py
  57. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/document.py
  58. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/domain.py
  59. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/layer1.py
  60. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/layer2.py
  61. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/optionstatus.py
  62. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/search.py
  63. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/sourceattribute.py
  64. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/__init__.py
  65. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/document.py
  66. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/domain.py
  67. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/exceptions.py
  68. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/layer1.py
  69. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/layer2.py
  70. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/optionstatus.py
  71. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/search.py
  72. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearchdomain/__init__.py
  73. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearchdomain/exceptions.py
  74. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudsearchdomain/layer1.py
  75. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudtrail/__init__.py
  76. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudtrail/exceptions.py
  77. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cloudtrail/layer1.py
  78. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/codedeploy/__init__.py
  79. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/codedeploy/exceptions.py
  80. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/codedeploy/layer1.py
  81. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cognito/__init__.py
  82. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cognito/identity/__init__.py
  83. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cognito/identity/exceptions.py
  84. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cognito/identity/layer1.py
  85. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cognito/sync/__init__.py
  86. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cognito/sync/exceptions.py
  87. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/cognito/sync/layer1.py
  88. 36 1
      desktop/core/ext-py/boto-2.42.0/boto/compat.py
  89. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/configservice/__init__.py
  90. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/configservice/exceptions.py
  91. 5 1
      desktop/core/ext-py/boto-2.42.0/boto/configservice/layer1.py
  92. 3 3
      desktop/core/ext-py/boto-2.42.0/boto/connection.py
  93. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/contrib/__init__.py
  94. 1 1
      desktop/core/ext-py/boto-2.42.0/boto/contrib/ymlmessage.py
  95. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/datapipeline/__init__.py
  96. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/datapipeline/exceptions.py
  97. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/datapipeline/layer1.py
  98. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/directconnect/__init__.py
  99. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/directconnect/exceptions.py
  100. 0 0
      desktop/core/ext-py/boto-2.42.0/boto/directconnect/layer1.py

+ 0 - 8
desktop/core/ext-py/boto-2.38.0/HUE-BUILD.rst

@@ -1,8 +0,0 @@
-####
-Note
-####
-
-We manually exclude boto from the pruning (it contains some modules name 'logs') in
-Makefile.tarball
-
-So need to keep in mind when upgrading or removing this dependency.

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/.gitignore → desktop/core/ext-py/boto-2.42.0/.gitignore


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/MANIFEST.in → desktop/core/ext-py/boto-2.42.0/MANIFEST.in


+ 21 - 14
desktop/core/ext-py/boto-2.38.0/PKG-INFO → desktop/core/ext-py/boto-2.42.0/PKG-INFO

@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Metadata-Version: 1.1
 Name: boto
 Name: boto
-Version: 2.38.0
+Version: 2.42.0
 Summary: Amazon Web Services Library
 Summary: Amazon Web Services Library
 Home-page: https://github.com/boto/boto/
 Home-page: https://github.com/boto/boto/
 Author: Mitch Garnaat
 Author: Mitch Garnaat
@@ -9,9 +9,9 @@ License: MIT
 Description: ####
 Description: ####
         boto
         boto
         ####
         ####
-        boto 2.38.0
+        boto 2.42.0
         
         
-        Released: 9-Apr-2015
+        Released: 19-Jul-2016
         
         
         .. image:: https://travis-ci.org/boto/boto.svg?branch=develop
         .. image:: https://travis-ci.org/boto/boto.svg?branch=develop
                 :target: https://travis-ci.org/boto/boto
                 :target: https://travis-ci.org/boto/boto
@@ -19,6 +19,24 @@ Description: ####
         .. image:: https://pypip.in/d/boto/badge.svg
         .. image:: https://pypip.in/d/boto/badge.svg
                 :target: https://pypi.python.org/pypi/boto/
                 :target: https://pypi.python.org/pypi/boto/
         
         
+        ******
+        Boto 3
+        ******
+        
+        `Boto3 <https://github.com/boto/boto3>`__, the next version of Boto, is now
+        stable and recommended for general use.  It can be used side-by-side with Boto
+        in the same project, so it is easy to start using Boto3 in your existing
+        projects as well as new projects. Going forward, API updates and all new
+        feature work will be focused on Boto3.
+        
+        To assist users who still depend on Boto and cannot immediately switch over, we
+        will be triaging and addressing critical issues and PRs in Boto in the short
+        term. As more users make the switch to Boto3, we expect to reduce our
+        maintenance involvement over time. If we decide on a cutoff date or any
+        significant changes to our maintenance plan, we will make pre-announcements
+        well ahead of schedule to allow ample time for our users to adapt/migrate.
+        
+        
         ************
         ************
         Introduction
         Introduction
         ************
         ************
@@ -34,17 +52,6 @@ Description: ####
         others know about your work in progress. Tests **must** pass on Python
         others know about your work in progress. Tests **must** pass on Python
         2.6, 2.7, 3.3, and 3.4 for pull requests to be accepted.
         2.6, 2.7, 3.3, and 3.4 for pull requests to be accepted.
         
         
-        ******
-        Boto 3
-        ******
-        The next major version of Boto is currently in developer preview and can
-        be found in the `Boto 3 <https://github.com/boto/boto3#readme>`__
-        repository and installed via ``pip``. It supports the latest service APIs
-        and provides a high-level object-oriented interface to many services.
-        
-        Please try Boto 3 and
-        `leave feedback <https://github.com/boto/boto3/issues>`__ with any issues,
-        suggestions, and feature requests you might have.
         
         
         ********
         ********
         Services
         Services

+ 20 - 13
desktop/core/ext-py/boto-2.38.0/README.rst → desktop/core/ext-py/boto-2.42.0/README.rst

@@ -1,9 +1,9 @@
 ####
 ####
 boto
 boto
 ####
 ####
-boto 2.38.0
+boto 2.42.0
 
 
-Released: 9-Apr-2015
+Released: 19-Jul-2016
 
 
 .. image:: https://travis-ci.org/boto/boto.svg?branch=develop
 .. image:: https://travis-ci.org/boto/boto.svg?branch=develop
         :target: https://travis-ci.org/boto/boto
         :target: https://travis-ci.org/boto/boto
@@ -11,6 +11,24 @@ Released: 9-Apr-2015
 .. image:: https://pypip.in/d/boto/badge.svg
 .. image:: https://pypip.in/d/boto/badge.svg
         :target: https://pypi.python.org/pypi/boto/
         :target: https://pypi.python.org/pypi/boto/
 
 
+******
+Boto 3
+******
+
+`Boto3 <https://github.com/boto/boto3>`__, the next version of Boto, is now
+stable and recommended for general use.  It can be used side-by-side with Boto
+in the same project, so it is easy to start using Boto3 in your existing
+projects as well as new projects. Going forward, API updates and all new
+feature work will be focused on Boto3.
+
+To assist users who still depend on Boto and cannot immediately switch over, we
+will be triaging and addressing critical issues and PRs in Boto in the short
+term. As more users make the switch to Boto3, we expect to reduce our
+maintenance involvement over time. If we decide on a cutoff date or any
+significant changes to our maintenance plan, we will make pre-announcements
+well ahead of schedule to allow ample time for our users to adapt/migrate.
+
+
 ************
 ************
 Introduction
 Introduction
 ************
 ************
@@ -26,17 +44,6 @@ and the `Porting Guide`_. If you would like, you can open an issue to let
 others know about your work in progress. Tests **must** pass on Python
 others know about your work in progress. Tests **must** pass on Python
 2.6, 2.7, 3.3, and 3.4 for pull requests to be accepted.
 2.6, 2.7, 3.3, and 3.4 for pull requests to be accepted.
 
 
-******
-Boto 3
-******
-The next major version of Boto is currently in developer preview and can
-be found in the `Boto 3 <https://github.com/boto/boto3#readme>`__
-repository and installed via ``pip``. It supports the latest service APIs
-and provides a high-level object-oriented interface to many services.
-
-Please try Boto 3 and
-`leave feedback <https://github.com/boto/boto3/issues>`__ with any issues,
-suggestions, and feature requests you might have.
 
 
 ********
 ********
 Services
 Services

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/asadmin → desktop/core/ext-py/boto-2.42.0/bin/asadmin


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/bundle_image → desktop/core/ext-py/boto-2.42.0/bin/bundle_image


+ 1 - 1
desktop/core/ext-py/boto-2.38.0/bin/cfadmin → desktop/core/ext-py/boto-2.42.0/bin/cfadmin

@@ -103,6 +103,6 @@ if __name__ == "__main__":
         cmd = help
         cmd = help
     try:
     try:
         cmd(cf, *args)
         cmd(cf, *args)
-    except TypeError, e:
+    except TypeError as e:
         print e
         print e
         help(cf, cmd.__name__)
         help(cf, cmd.__name__)

+ 2 - 2
desktop/core/ext-py/boto-2.38.0/bin/cq → desktop/core/ext-py/boto-2.42.0/bin/cq

@@ -65,7 +65,7 @@ def main():
     if queue_name:
     if queue_name:
         try:
         try:
             rs = [c.create_queue(queue_name)]
             rs = [c.create_queue(queue_name)]
-        except SQSError, e:
+        except SQSError as e:
             print 'An Error Occurred:'
             print 'An Error Occurred:'
             print '%s: %s' % (e.status, e.reason)
             print '%s: %s' % (e.status, e.reason)
             print e.body
             print e.body
@@ -73,7 +73,7 @@ def main():
     else:
     else:
         try:
         try:
             rs = c.get_all_queues()
             rs = c.get_all_queues()
-        except SQSError, e:
+        except SQSError as e:
             print 'An Error Occurred:'
             print 'An Error Occurred:'
             print '%s: %s' % (e.status, e.reason)
             print '%s: %s' % (e.status, e.reason)
             print e.body
             print e.body

+ 1 - 1
desktop/core/ext-py/boto-2.38.0/bin/cwutil → desktop/core/ext-py/boto-2.42.0/bin/cwutil

@@ -135,6 +135,6 @@ if __name__ == "__main__":
         cmd = help
         cmd = help
     try:
     try:
         cmd(*args)
         cmd(*args)
-    except TypeError, e:
+    except TypeError as e:
         print e
         print e
         help(cmd.__name__)
         help(cmd.__name__)

+ 2 - 1
desktop/core/ext-py/boto-2.38.0/bin/dynamodb_dump → desktop/core/ext-py/boto-2.42.0/bin/dynamodb_dump

@@ -6,6 +6,7 @@ import os
 
 
 import boto
 import boto
 from boto.compat import json
 from boto.compat import json
+from boto.compat import six
 
 
 
 
 DESCRIPTION = """Dump the contents of one or more DynamoDB tables to the local filesystem.
 DESCRIPTION = """Dump the contents of one or more DynamoDB tables to the local filesystem.
@@ -39,7 +40,7 @@ def dump_table(table, out_dir):
         for item in table.scan():
         for item in table.scan():
             # JSON can't serialize sets -- convert those to lists.
             # JSON can't serialize sets -- convert those to lists.
             data = {}
             data = {}
-            for k, v in item.iteritems():
+            for k, v in six.iteritems(item):
                 if isinstance(v, (set, frozenset)):
                 if isinstance(v, (set, frozenset)):
                     data[k] = list(v)
                     data[k] = list(v)
                 else:
                 else:

+ 2 - 1
desktop/core/ext-py/boto-2.38.0/bin/dynamodb_load → desktop/core/ext-py/boto-2.42.0/bin/dynamodb_load

@@ -5,6 +5,7 @@ import os
 
 
 import boto
 import boto
 from boto.compat import json
 from boto.compat import json
+from boto.compat import six
 from boto.dynamodb.schema import Schema
 from boto.dynamodb.schema import Schema
 
 
 
 
@@ -61,7 +62,7 @@ def load_table(table, in_fd):
     for i in _json_iterload(in_fd):
     for i in _json_iterload(in_fd):
         # Convert lists back to sets.
         # Convert lists back to sets.
         data = {}
         data = {}
-        for k, v in i.iteritems():
+        for k, v in six.iteritems(i):
             if isinstance(v, list):
             if isinstance(v, list):
                 data[k] = set(v)
                 data[k] = set(v)
             else:
             else:

+ 2 - 1
desktop/core/ext-py/boto-2.38.0/bin/elbadmin → desktop/core/ext-py/boto-2.42.0/bin/elbadmin

@@ -113,6 +113,7 @@ def get(elb, name):
 
 
         # Make map of all instance Id's to Name tags
         # Make map of all instance Id's to Name tags
         import boto
         import boto
+        from boto.compat.six import iteritems
         if not options.region:
         if not options.region:
             ec2 = boto.connect_ec2()
             ec2 = boto.connect_ec2()
         else:
         else:
@@ -127,7 +128,7 @@ def get(elb, name):
             if i.id in instances:
             if i.id in instances:
                 names[i.id] = i.tags.get('Name', '')
                 names[i.id] = i.tags.get('Name', '')
 
 
-        name_column_width = max([4] + [len(v) for k,v in names.iteritems()]) + 2
+        name_column_width = max([4] + [len(v) for k,v in iteritems(names)]) + 2
 
 
         print "Instances"
         print "Instances"
         print "---------"
         print "---------"

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/fetch_file → desktop/core/ext-py/boto-2.42.0/bin/fetch_file


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/glacier → desktop/core/ext-py/boto-2.42.0/bin/glacier


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/instance_events → desktop/core/ext-py/boto-2.42.0/bin/instance_events


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/kill_instance → desktop/core/ext-py/boto-2.42.0/bin/kill_instance


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/launch_instance → desktop/core/ext-py/boto-2.42.0/bin/launch_instance


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/list_instances → desktop/core/ext-py/boto-2.42.0/bin/list_instances


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/lss3 → desktop/core/ext-py/boto-2.42.0/bin/lss3


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/mturk → desktop/core/ext-py/boto-2.42.0/bin/mturk


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/pyami_sendmail → desktop/core/ext-py/boto-2.42.0/bin/pyami_sendmail


+ 1 - 1
desktop/core/ext-py/boto-2.38.0/bin/route53 → desktop/core/ext-py/boto-2.42.0/bin/route53

@@ -200,6 +200,6 @@ if __name__ == "__main__":
         cmd = help
         cmd = help
     try:
     try:
         cmd(conn, *args)
         cmd(conn, *args)
-    except TypeError, e:
+    except TypeError as e:
         print e
         print e
         help(conn, cmd.__name__)
         help(conn, cmd.__name__)

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/s3put → desktop/core/ext-py/boto-2.42.0/bin/s3put


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/sdbadmin → desktop/core/ext-py/boto-2.42.0/bin/sdbadmin


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/bin/taskadmin → desktop/core/ext-py/boto-2.42.0/bin/taskadmin


+ 1 - 1
desktop/core/ext-py/boto-2.38.0/boto/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/__init__.py

@@ -38,7 +38,7 @@ import logging.config
 from boto.compat import urlparse
 from boto.compat import urlparse
 from boto.exception import InvalidUriError
 from boto.exception import InvalidUriError
 
 
-__version__ = '2.38.0'
+__version__ = '2.42.0'
 Version = __version__  # for backware compatibility
 Version = __version__  # for backware compatibility
 
 
 # http://bugs.python.org/issue7980
 # http://bugs.python.org/issue7980

+ 12 - 8
desktop/core/ext-py/boto-2.38.0/boto/auth.py → desktop/core/ext-py/boto-2.42.0/boto/auth.py

@@ -39,7 +39,7 @@ import hmac
 import os
 import os
 import posixpath
 import posixpath
 
 
-from boto.compat import urllib, encodebytes
+from boto.compat import urllib, encodebytes, parse_qs_safe
 from boto.auth_handler import AuthHandler
 from boto.auth_handler import AuthHandler
 from boto.exception import BotoClientError
 from boto.exception import BotoClientError
 
 
@@ -55,9 +55,13 @@ except ImportError:
 # by default.
 # by default.
 SIGV4_DETECT = [
 SIGV4_DETECT = [
     '.cn-',
     '.cn-',
-    # In eu-central we support both host styles for S3
+    # In eu-central and ap-northeast-2 we support both host styles for S3
     '.eu-central',
     '.eu-central',
     '-eu-central',
     '-eu-central',
+    '.ap-northeast-2',
+    '-ap-northeast-2',
+    '.ap-south-1',
+    '-ap-south-1'
 ]
 ]
 
 
 
 
@@ -573,7 +577,7 @@ class S3HmacAuthV4Handler(HmacAuthV4Handler, AuthHandler):
         # Because some quoting may have already been applied, let's back it out.
         # Because some quoting may have already been applied, let's back it out.
         unquoted = urllib.parse.unquote(path.path)
         unquoted = urllib.parse.unquote(path.path)
         # Requote, this time addressing all characters.
         # Requote, this time addressing all characters.
-        encoded = urllib.parse.quote(unquoted)
+        encoded = urllib.parse.quote(unquoted, safe='/~')
         return encoded
         return encoded
 
 
     def canonical_query_string(self, http_request):
     def canonical_query_string(self, http_request):
@@ -688,7 +692,7 @@ class S3HmacAuthV4Handler(HmacAuthV4Handler, AuthHandler):
             modified_req.params = copy_params
             modified_req.params = copy_params
 
 
         raw_qs = parsed_path.query
         raw_qs = parsed_path.query
-        existing_qs = urllib.parse.parse_qs(
+        existing_qs = parse_qs_safe(
             raw_qs,
             raw_qs,
             keep_blank_values=True
             keep_blank_values=True
         )
         )
@@ -769,8 +773,8 @@ class S3HmacAuthV4Handler(HmacAuthV4Handler, AuthHandler):
         # Add signature to params now that we have it
         # Add signature to params now that we have it
         req.params['X-Amz-Signature'] = signature
         req.params['X-Amz-Signature'] = signature
 
 
-        return 'https://%s%s?%s' % (req.host, req.path,
-                                    urllib.parse.urlencode(req.params))
+        return '%s://%s%s?%s' % (req.protocol, req.host, req.path,
+                                 urllib.parse.urlencode(req.params))
 
 
 
 
 class STSAnonHandler(AuthHandler):
 class STSAnonHandler(AuthHandler):
@@ -878,8 +882,8 @@ class QuerySignatureV1AuthHandler(QuerySignatureHelper, AuthHandler):
     def _calc_signature(self, params, *args):
     def _calc_signature(self, params, *args):
         boto.log.debug('using _calc_signature_1')
         boto.log.debug('using _calc_signature_1')
         hmac = self._get_hmac()
         hmac = self._get_hmac()
-        keys = params.keys()
-        keys.sort(cmp=lambda x, y: cmp(x.lower(), y.lower()))
+        keys = list(params.keys())
+        keys.sort(key=lambda x: x.lower())
         pairs = []
         pairs = []
         for key in keys:
         for key in keys:
             hmac.update(key.encode('utf-8'))
             hmac.update(key.encode('utf-8'))

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/auth_handler.py → desktop/core/ext-py/boto-2.42.0/boto/auth_handler.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/awslambda/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/awslambda/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/awslambda/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/awslambda/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/awslambda/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/awslambda/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/beanstalk/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/beanstalk/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/beanstalk/exception.py → desktop/core/ext-py/boto-2.42.0/boto/beanstalk/exception.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/beanstalk/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/beanstalk/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/beanstalk/response.py → desktop/core/ext-py/boto-2.42.0/boto/beanstalk/response.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/beanstalk/wrapper.py → desktop/core/ext-py/boto-2.42.0/boto/beanstalk/wrapper.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cacerts/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cacerts/__init__.py


+ 0 - 32
desktop/core/ext-py/boto-2.38.0/boto/cacerts/cacerts.txt → desktop/core/ext-py/boto-2.42.0/boto/cacerts/cacerts.txt

@@ -93,22 +93,6 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
 70+sB3c4
 70+sB3c4
 -----END CERTIFICATE-----
 -----END CERTIFICATE-----
 
 
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
-TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
-WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
-Tqj/ZA1k
------END CERTIFICATE-----
-
 Verisign Class 3 Public Primary Certification Authority - G2
 Verisign Class 3 Public Primary Certification Authority - G2
 ============================================================
 ============================================================
 -----BEGIN CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
@@ -2613,22 +2597,6 @@ MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
 tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
 tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
 -----END CERTIFICATE-----
 -----END CERTIFICATE-----
 
 
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
-CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
-bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
-D/xwzoiQ
------END CERTIFICATE-----
-
 Microsec e-Szigno Root CA 2009
 Microsec e-Szigno Root CA 2009
 ==============================
 ==============================
 -----BEGIN CERTIFICATE-----
 -----BEGIN CERTIFICATE-----

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudformation/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cloudformation/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudformation/connection.py → desktop/core/ext-py/boto-2.42.0/boto/cloudformation/connection.py


+ 9 - 1
desktop/core/ext-py/boto-2.38.0/boto/cloudformation/stack.py → desktop/core/ext-py/boto-2.42.0/boto/cloudformation/stack.py

@@ -16,10 +16,18 @@ class Stack(object):
         self.tags = []
         self.tags = []
         self.stack_id = None
         self.stack_id = None
         self.stack_status = None
         self.stack_status = None
+        self.stack_status_reason = None
         self.stack_name = None
         self.stack_name = None
-        self.stack_name_reason = None
         self.timeout_in_minutes = None
         self.timeout_in_minutes = None
 
 
+    @property
+    def stack_name_reason(self):
+        return self.stack_status_reason
+
+    @stack_name_reason.setter
+    def stack_name_reason(self, value):
+        self.stack_status_reason = value
+
     def startElement(self, name, attrs, connection):
     def startElement(self, name, attrs, connection):
         if name == "Parameters":
         if name == "Parameters":
             self.parameters = ResultSet([('member', Parameter)])
             self.parameters = ResultSet([('member', Parameter)])

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudformation/template.py → desktop/core/ext-py/boto-2.42.0/boto/cloudformation/template.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/__init__.py


+ 2 - 2
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/distribution.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/distribution.py

@@ -525,12 +525,12 @@ class Distribution(object):
         :param expire_time: The expiry time of the URL. If provided, the URL
         :param expire_time: The expiry time of the URL. If provided, the URL
             will expire after the time has passed. If not provided the URL will
             will expire after the time has passed. If not provided the URL will
             never expire. Format is a unix epoch.
             never expire. Format is a unix epoch.
-            Use time.time() + duration_in_sec.
+            Use int(time.time() + duration_in_sec).
 
 
         :type valid_after_time: int
         :type valid_after_time: int
         :param valid_after_time: If provided, the URL will not be valid until
         :param valid_after_time: If provided, the URL will not be valid until
             after valid_after_time. Format is a unix epoch.
             after valid_after_time. Format is a unix epoch.
-            Use time.time() + secs_until_valid.
+            Use int(time.time() + secs_until_valid).
 
 
         :type ip_address: str
         :type ip_address: str
         :param ip_address: If provided, only allows access from the specified
         :param ip_address: If provided, only allows access from the specified

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/exception.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/exception.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/identity.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/identity.py


+ 2 - 2
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/invalidation.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/invalidation.py

@@ -68,10 +68,10 @@ class InvalidationBatch(object):
         self.paths[k] = v
         self.paths[k] = v
 
 
     def escape(self, p):
     def escape(self, p):
-        """Escape a path, make sure it begins with a slash and contains no invalid characters"""
+        """Escape a path, make sure it begins with a slash and contains no invalid characters. Retain literal wildcard characters."""
         if not p[0] == "/":
         if not p[0] == "/":
             p = "/%s" % p
             p = "/%s" % p
-        return urllib.parse.quote(p)
+        return urllib.parse.quote(p, safe = "/*")
 
 
     def to_xml(self):
     def to_xml(self):
         """Get this batch as XML"""
         """Get this batch as XML"""

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/logging.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/logging.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/object.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/object.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/origin.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/origin.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudfront/signers.py → desktop/core/ext-py/boto-2.42.0/boto/cloudfront/signers.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudhsm/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cloudhsm/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudhsm/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/cloudhsm/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudhsm/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/cloudhsm/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/document.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/document.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/domain.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/domain.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/layer2.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/layer2.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/optionstatus.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/optionstatus.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/search.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/search.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch/sourceattribute.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch/sourceattribute.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/document.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/document.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/domain.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/domain.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/layer2.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/layer2.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/optionstatus.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/optionstatus.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearch2/search.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearch2/search.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearchdomain/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearchdomain/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearchdomain/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearchdomain/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudsearchdomain/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/cloudsearchdomain/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudtrail/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cloudtrail/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudtrail/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/cloudtrail/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cloudtrail/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/cloudtrail/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/codedeploy/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/codedeploy/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/codedeploy/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/codedeploy/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/codedeploy/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/codedeploy/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cognito/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cognito/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cognito/identity/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cognito/identity/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cognito/identity/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/cognito/identity/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cognito/identity/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/cognito/identity/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cognito/sync/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/cognito/sync/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cognito/sync/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/cognito/sync/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/cognito/sync/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/cognito/sync/layer1.py


+ 36 - 1
desktop/core/ext-py/boto-2.38.0/boto/compat.py → desktop/core/ext-py/boto-2.42.0/boto/compat.py

@@ -54,14 +54,49 @@ from boto.vendored.six.moves import filter, http_client, map, _thread, \
 from boto.vendored.six.moves.queue import Queue
 from boto.vendored.six.moves.queue import Queue
 from boto.vendored.six.moves.urllib.parse import parse_qs, quote, unquote, \
 from boto.vendored.six.moves.urllib.parse import parse_qs, quote, unquote, \
                                                  urlparse, urlsplit
                                                  urlparse, urlsplit
+from boto.vendored.six.moves.urllib.parse import unquote_plus
 from boto.vendored.six.moves.urllib.request import urlopen
 from boto.vendored.six.moves.urllib.request import urlopen
 
 
 if six.PY3:
 if six.PY3:
     # StandardError was removed, so use the base exception type instead
     # StandardError was removed, so use the base exception type instead
     StandardError = Exception
     StandardError = Exception
     long_type = int
     long_type = int
-    from configparser import ConfigParser
+    from configparser import ConfigParser, NoOptionError, NoSectionError
+    unquote_str = unquote_plus
+    parse_qs_safe = parse_qs
 else:
 else:
     StandardError = StandardError
     StandardError = StandardError
     long_type = long
     long_type = long
     from ConfigParser import SafeConfigParser as ConfigParser
     from ConfigParser import SafeConfigParser as ConfigParser
+    from ConfigParser import NoOptionError, NoSectionError
+
+    def unquote_str(value, encoding='utf-8'):
+        # In python2, unquote() gives us a string back that has the urldecoded
+        # bits, but not the unicode parts.  We need to decode this manually.
+        # unquote has special logic in which if it receives a unicode object it
+        # will decode it to latin1.  This is hard coded.  To avoid this, we'll
+        # encode the string with the passed in encoding before trying to
+        # unquote it.
+        byte_string = value.encode(encoding)
+        return unquote_plus(byte_string).decode(encoding)
+
+    # These are the same default arguments for python3's
+    # urllib.parse.parse_qs.
+    def parse_qs_safe(qs, keep_blank_values=False, strict_parsing=False,
+                      encoding='utf-8', errors='replace'):
+        """Parse a query handling unicode arguments properly in Python 2."""
+        is_text_type = isinstance(qs, six.text_type)
+        if is_text_type:
+            # URL encoding uses ASCII code points only.
+            qs = qs.encode('ascii')
+        qs_dict = parse_qs(qs, keep_blank_values, strict_parsing)
+        if is_text_type:
+            # Decode the parsed dictionary back to unicode.
+            result = {}
+            for (name, value) in qs_dict.items():
+                decoded_name = name.decode(encoding, errors)
+                decoded_value = [item.decode(encoding, errors)
+                                 for item in value]
+                result[decoded_name] = decoded_value
+            return result
+        return qs_dict

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/configservice/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/configservice/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/configservice/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/configservice/exceptions.py


+ 5 - 1
desktop/core/ext-py/boto-2.38.0/boto/configservice/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/configservice/layer1.py

@@ -289,7 +289,11 @@ class ConfigServiceConnection(AWSQueryConnection):
 
 
         :type configuration_recorder: dict
         :type configuration_recorder: dict
         :param configuration_recorder: The configuration recorder object that
         :param configuration_recorder: The configuration recorder object that
-            records each configuration change made to the resources.
+            records each configuration change made to the resources. The
+            format should follow:
+
+            {'name': 'myrecorder',
+             'roleARN': 'arn:aws:iam::123456789012:role/trusted-aws-config'}
 
 
         """
         """
         params = {'ConfigurationRecorder': configuration_recorder, }
         params = {'ConfigurationRecorder': configuration_recorder, }

+ 3 - 3
desktop/core/ext-py/boto-2.38.0/boto/connection.py → desktop/core/ext-py/boto-2.42.0/boto/connection.py

@@ -368,7 +368,7 @@ class HTTPRequest(object):
             for key in self.headers:
             for key in self.headers:
                 val = self.headers[key]
                 val = self.headers[key]
                 if isinstance(val, six.text_type):
                 if isinstance(val, six.text_type):
-                    safe = '!"#$%&\'()*+,/:;<=>?@[\\]^`{|}~'
+                    safe = '!"#$%&\'()*+,/:;<=>?@[\\]^`{|}~ '
                     self.headers[key] = quote(val.encode('utf-8'), safe)
                     self.headers[key] = quote(val.encode('utf-8'), safe)
             setattr(self, '_headers_quoted', True)
             setattr(self, '_headers_quoted', True)
 
 
@@ -726,7 +726,7 @@ class AWSAuthConnection(object):
 
 
         # Make sure the host is really just the host, not including
         # Make sure the host is really just the host, not including
         # the port number
         # the port number
-        host = host.split(':', 1)[0]
+        host = boto.utils.parse_host(host)
 
 
         http_connection_kwargs = self.http_connection_kwargs.copy()
         http_connection_kwargs = self.http_connection_kwargs.copy()
 
 
@@ -1048,7 +1048,7 @@ class AWSAuthConnection(object):
         if self.host_header and not boto.utils.find_matching_headers('host', headers):
         if self.host_header and not boto.utils.find_matching_headers('host', headers):
             headers['host'] = self.host_header
             headers['host'] = self.host_header
         host = host or self.host
         host = host or self.host
-        if self.use_proxy:
+        if self.use_proxy and not self.skip_proxy(host):
             if not auth_path:
             if not auth_path:
                 auth_path = path
                 auth_path = path
             path = self.prefix_proxy_to_path(path, host)
             path = self.prefix_proxy_to_path(path, host)

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/contrib/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/contrib/__init__.py


+ 1 - 1
desktop/core/ext-py/boto-2.38.0/boto/contrib/ymlmessage.py → desktop/core/ext-py/boto-2.42.0/boto/contrib/ymlmessage.py

@@ -47,7 +47,7 @@ class YAMLMessage(Message):
         super(YAMLMessage, self).__init__(queue, body)
         super(YAMLMessage, self).__init__(queue, body)
 
 
     def set_body(self, body):
     def set_body(self, body):
-        self.data = yaml.load(body)
+        self.data = yaml.safe_load(body)
 
 
     def get_body(self):
     def get_body(self):
         return yaml.dump(self.data)
         return yaml.dump(self.data)

+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/datapipeline/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/datapipeline/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/datapipeline/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/datapipeline/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/datapipeline/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/datapipeline/layer1.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/directconnect/__init__.py → desktop/core/ext-py/boto-2.42.0/boto/directconnect/__init__.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/directconnect/exceptions.py → desktop/core/ext-py/boto-2.42.0/boto/directconnect/exceptions.py


+ 0 - 0
desktop/core/ext-py/boto-2.38.0/boto/directconnect/layer1.py → desktop/core/ext-py/boto-2.42.0/boto/directconnect/layer1.py


部分文件因为文件数量过多而无法显示