Hello community,

here is the log from the commit of package python3-boto for openSUSE:Factory 
checked in at 2016-07-21 08:17:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-boto (Old)
 and      /work/SRC/openSUSE:Factory/.python3-boto.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-boto"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-boto/python3-boto-doc.changes    
2016-07-15 12:54:59.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python3-boto.new/python3-boto-doc.changes       
2016-07-21 08:18:02.000000000 +0200
@@ -1,0 +2,7 @@
+Wed Jul 20 04:38:55 UTC 2016 - [email protected]
+
+- update to version 2.42.0:
+  * Respect is_secure parameter in generate_url_sigv4 (:sha:`59ba28d`)
+  * Update MTurk API (:issue:`3563`, :sha:`250d891`)
+
+-------------------------------------------------------------------
python3-boto.changes: same change

Old:
----
  boto-2.41.0.tar.gz

New:
----
  boto-2.42.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python3-boto-doc.spec ++++++
--- /var/tmp/diff_new_pack.h1AZ5c/_old  2016-07-21 08:18:04.000000000 +0200
+++ /var/tmp/diff_new_pack.h1AZ5c/_new  2016-07-21 08:18:04.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python3-boto-doc
-Version:        2.41.0
+Version:        2.42.0
 Release:        0
 Url:            https://github.com/boto/boto/
 Summary:        Documentation for python3-boto

python3-boto.spec: same change
++++++ boto-2.41.0.tar.gz -> boto-2.42.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/PKG-INFO new/boto-2.42.0/PKG-INFO
--- old/boto-2.41.0/PKG-INFO    2016-06-28 03:09:42.000000000 +0200
+++ new/boto-2.42.0/PKG-INFO    2016-07-20 00:23:06.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: boto
-Version: 2.41.0
+Version: 2.42.0
 Summary: Amazon Web Services Library
 Home-page: https://github.com/boto/boto/
 Author: Mitch Garnaat
@@ -9,9 +9,9 @@
 Description: ####
         boto
         ####
-        boto 2.41.0
+        boto 2.42.0
         
-        Released: 27-Jun-2016
+        Released: 19-Jul-2016
         
         .. image:: https://travis-ci.org/boto/boto.svg?branch=develop
                 :target: https://travis-ci.org/boto/boto
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/README.rst new/boto-2.42.0/README.rst
--- old/boto-2.41.0/README.rst  2016-06-28 03:08:22.000000000 +0200
+++ new/boto-2.42.0/README.rst  2016-07-20 00:22:17.000000000 +0200
@@ -1,9 +1,9 @@
 ####
 boto
 ####
-boto 2.41.0
+boto 2.42.0
 
-Released: 27-Jun-2016
+Released: 19-Jul-2016
 
 .. image:: https://travis-ci.org/boto/boto.svg?branch=develop
         :target: https://travis-ci.org/boto/boto
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/boto/__init__.py 
new/boto-2.42.0/boto/__init__.py
--- old/boto-2.41.0/boto/__init__.py    2016-06-28 03:08:22.000000000 +0200
+++ new/boto-2.42.0/boto/__init__.py    2016-07-20 00:22:17.000000000 +0200
@@ -38,7 +38,7 @@
 from boto.compat import urlparse
 from boto.exception import InvalidUriError
 
-__version__ = '2.41.0'
+__version__ = '2.42.0'
 Version = __version__  # for backware compatibility
 
 # http://bugs.python.org/issue7980
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/boto/auth.py new/boto-2.42.0/boto/auth.py
--- old/boto-2.41.0/boto/auth.py        2016-06-28 03:01:15.000000000 +0200
+++ new/boto-2.42.0/boto/auth.py        2016-07-20 00:20:46.000000000 +0200
@@ -773,8 +773,8 @@
         # Add signature to params now that we have it
         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):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/boto/ec2/connection.py 
new/boto-2.42.0/boto/ec2/connection.py
--- old/boto-2.41.0/boto/ec2/connection.py      2016-04-28 19:27:42.000000000 
+0200
+++ new/boto-2.42.0/boto/ec2/connection.py      2016-07-20 00:20:46.000000000 
+0200
@@ -2650,7 +2650,7 @@
         # get all the snapshots, sort them by date and time, and
         # organize them into one array for each volume:
         all_snapshots = self.get_all_snapshots(owner = 'self')
-        all_snapshots.sort(cmp = lambda x, y: cmp(x.start_time, y.start_time))
+        all_snapshots.sort(key=lambda x: x.start_time)
         snaps_for_each_volume = {}
         for snap in all_snapshots:
             # the snapshot name and the volume name are the same.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/boto/mturk/connection.py 
new/boto-2.42.0/boto/mturk/connection.py
--- old/boto-2.41.0/boto/mturk/connection.py    2016-04-28 19:14:01.000000000 
+0200
+++ new/boto-2.42.0/boto/mturk/connection.py    2016-07-20 00:20:46.000000000 
+0200
@@ -39,7 +39,7 @@
 
 class MTurkConnection(AWSQueryConnection):
 
-    APIVersion = '2012-03-25'
+    APIVersion = '2014-08-15'
 
     def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
                  is_secure=True, port=None, proxy=None, proxy_port=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/boto/mturk/qualification.py 
new/boto-2.42.0/boto/mturk/qualification.py
--- old/boto-2.41.0/boto/mturk/qualification.py 2016-04-28 19:14:01.000000000 
+0200
+++ new/boto-2.42.0/boto/mturk/qualification.py 2016-07-20 00:20:46.000000000 
+0200
@@ -55,7 +55,10 @@
             "QualificationTypeId": self.qualification_type_id,
             "Comparator": self.comparator,
         }
-        if self.comparator != 'Exists' and self.integer_value is not None:
+        if self.comparator in ('In', 'NotIn'):
+            for i, integer_value in enumerate(self.integer_value, 1):
+                params['IntegerValue.%d' % i] = integer_value
+        elif self.comparator not in ('Exists', 'DoesNotExist') and 
self.integer_value is not None:
             params['IntegerValue'] = self.integer_value
         if self.required_to_preview:
             params['RequiredToPreview'] = "true"
@@ -104,6 +107,11 @@
 class NumberHitsApprovedRequirement(Requirement):
     """
     Specifies the total number of HITs submitted by a Worker that have been 
approved. The value is an integer greater than or equal to 0.
+
+    If specifying a Country and Subdivision, use a tuple of valid  ISO 3166 
country code and ISO 3166-2 subdivision code, e.g. ('US', 'CA') for the US 
State of California.
+
+    When using the 'In' and 'NotIn', locale should be a list of Countries 
and/or (Country, Subdivision) tuples.
+
     """
 
     def __init__(self, comparator, integer_value, required_to_preview=False):
@@ -122,8 +130,20 @@
         params =  {
             "QualificationTypeId": self.qualification_type_id,
             "Comparator": self.comparator,
-            'LocaleValue.Country': self.locale,
         }
+        if self.comparator in ('In', 'NotIn'):
+            for i, locale in enumerate(self.locale, 1):
+                if isinstance(locale, tuple):
+                    params['LocaleValue.%d.Country' % i] = locale[0]
+                    params['LocaleValue.%d.Subdivision' % i] = locale[1]
+                else:
+                    params['LocaleValue.%d.Country' % i] = locale
+        else:
+            if isinstance(self.locale, tuple):
+                params['LocaleValue.Country'] = self.locale[0]
+                params['LocaleValue.Subdivision'] = self.locale[1]
+            else:
+                params['LocaleValue.Country'] = self.locale
         if self.required_to_preview:
             params['RequiredToPreview'] = "true"
         return params
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/boto.egg-info/PKG-INFO 
new/boto-2.42.0/boto.egg-info/PKG-INFO
--- old/boto-2.41.0/boto.egg-info/PKG-INFO      2016-06-28 03:09:41.000000000 
+0200
+++ new/boto-2.42.0/boto.egg-info/PKG-INFO      2016-07-20 00:23:06.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: boto
-Version: 2.41.0
+Version: 2.42.0
 Summary: Amazon Web Services Library
 Home-page: https://github.com/boto/boto/
 Author: Mitch Garnaat
@@ -9,9 +9,9 @@
 Description: ####
         boto
         ####
-        boto 2.41.0
+        boto 2.42.0
         
-        Released: 27-Jun-2016
+        Released: 19-Jul-2016
         
         .. image:: https://travis-ci.org/boto/boto.svg?branch=develop
                 :target: https://travis-ci.org/boto/boto
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/boto.egg-info/SOURCES.txt 
new/boto-2.42.0/boto.egg-info/SOURCES.txt
--- old/boto-2.41.0/boto.egg-info/SOURCES.txt   2016-06-28 03:09:42.000000000 
+0200
+++ new/boto-2.42.0/boto.egg-info/SOURCES.txt   2016-07-20 00:23:06.000000000 
+0200
@@ -558,6 +558,7 @@
 docs/source/releasenotes/v2.4.0.rst
 docs/source/releasenotes/v2.40.0.rst
 docs/source/releasenotes/v2.41.0.rst
+docs/source/releasenotes/v2.42.0.rst
 docs/source/releasenotes/v2.5.0.rst
 docs/source/releasenotes/v2.5.1.rst
 docs/source/releasenotes/v2.5.2.rst
@@ -855,6 +856,11 @@
 tests/unit/manage/test_ssh.py
 tests/unit/mturk/__init__.py
 tests/unit/mturk/test_connection.py
+tests/unit/mturk/test_locale_qualification_in.py
+tests/unit/mturk/test_locale_qualification_notin.py
+tests/unit/mturk/test_qualification_doesnotexist.py
+tests/unit/mturk/test_qualification_exists.py
+tests/unit/mturk/test_qualification_qualtypewithscore_in.py
 tests/unit/mws/__init__.py
 tests/unit/mws/test_connection.py
 tests/unit/mws/test_response.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/docs/source/index.rst 
new/boto-2.42.0/docs/source/index.rst
--- old/boto-2.41.0/docs/source/index.rst       2016-06-28 03:08:22.000000000 
+0200
+++ new/boto-2.42.0/docs/source/index.rst       2016-07-20 00:22:17.000000000 
+0200
@@ -152,6 +152,7 @@
 .. toctree::
    :titlesonly:
 
+   releasenotes/v2.42.0
    releasenotes/v2.41.0
    releasenotes/v2.40.0
    releasenotes/v2.39.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/docs/source/releasenotes/v2.42.0.rst 
new/boto-2.42.0/docs/source/releasenotes/v2.42.0.rst
--- old/boto-2.41.0/docs/source/releasenotes/v2.42.0.rst        1970-01-01 
01:00:00.000000000 +0100
+++ new/boto-2.42.0/docs/source/releasenotes/v2.42.0.rst        2016-07-20 
00:22:17.000000000 +0200
@@ -0,0 +1,11 @@
+boto v2.42.0
+============
+
+:date: 2016/07/19
+
+Updates the Mechanical Turk API and fixes some bugs.
+
+Changes
+-------
+* Respect is_secure parameter in generate_url_sigv4 (:sha:`59ba28d`)
+* Update MTurk API (:issue:`3563`, :sha:`250d891`)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/tests/unit/ec2/test_connection.py 
new/boto-2.42.0/tests/unit/ec2/test_connection.py
--- old/boto-2.41.0/tests/unit/ec2/test_connection.py   2016-04-28 
19:27:42.000000000 +0200
+++ new/boto-2.42.0/tests/unit/ec2/test_connection.py   2016-07-20 
00:20:46.000000000 +0200
@@ -1,6 +1,4 @@
 #!/usr/bin/env python
-import httplib
-
 from datetime import datetime, timedelta
 from mock import MagicMock, Mock
 from tests.unit import unittest
@@ -13,6 +11,7 @@
 from boto.ec2.connection import EC2Connection
 from boto.ec2.snapshot import Snapshot
 from boto.ec2.reservedinstance import ReservedInstancesConfiguration
+from boto.compat import http_client
 
 
 class TestEC2ConnectionBase(AWSMockServiceTestCase):
@@ -990,12 +989,12 @@
 
 class TestConnectToRegion(unittest.TestCase):
     def setUp(self):
-        self.https_connection = Mock(spec=httplib.HTTPSConnection)
+        self.https_connection = Mock(spec=http_client.HTTPSConnection)
         self.https_connection_factory = (
             Mock(return_value=self.https_connection), ())
 
     def test_aws_region(self):
-        region = boto.ec2.RegionData.keys()[0]
+        region = list(boto.ec2.RegionData.keys())[0]
         self.ec2 = boto.ec2.connect_to_region(
             region,
             https_connection_factory=self.https_connection_factory,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/boto-2.41.0/tests/unit/ec2containerservice/test_connection.py 
new/boto-2.42.0/tests/unit/ec2containerservice/test_connection.py
--- old/boto-2.41.0/tests/unit/ec2containerservice/test_connection.py   
2016-04-28 19:14:01.000000000 +0200
+++ new/boto-2.42.0/tests/unit/ec2containerservice/test_connection.py   
2016-07-20 00:20:46.000000000 +0200
@@ -20,14 +20,25 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 # IN THE SOFTWARE.
 #
+from mock import Mock
 from tests.unit import unittest
 
 import boto.ec2containerservice
 from boto.ec2containerservice.layer1 import EC2ContainerServiceConnection
+from boto.compat import http_client
 
 
 class TestConnectToRegion(unittest.TestCase):
 
+    def setUp(self):
+        self.https_connection = Mock(spec=http_client.HTTPSConnection)
+        self.https_connection_factory = (
+            Mock(return_value=self.https_connection), ())
+
     def test_aws_region(self):
-        ecs = boto.ec2containerservice.connect_to_region('us-east-1')
+        ecs = boto.ec2containerservice.connect_to_region('us-east-1',
+            https_connection_factory=self.https_connection_factory,
+            aws_access_key_id='aws_access_key_id',
+            aws_secret_access_key='aws_secret_access_key'
+        )
         self.assertIsInstance(ecs, EC2ContainerServiceConnection)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/boto-2.41.0/tests/unit/mturk/test_locale_qualification_in.py 
new/boto-2.42.0/tests/unit/mturk/test_locale_qualification_in.py
--- old/boto-2.41.0/tests/unit/mturk/test_locale_qualification_in.py    
1970-01-01 01:00:00.000000000 +0100
+++ new/boto-2.42.0/tests/unit/mturk/test_locale_qualification_in.py    
2016-07-20 00:20:46.000000000 +0200
@@ -0,0 +1,133 @@
+# -*- coding: utf-8 -*-
+
+from tests.unit import AWSMockServiceTestCase
+
+from boto.mturk.connection import MTurkConnection
+from boto.mturk.question import ExternalQuestion
+from boto.mturk.qualification import \
+     Qualifications, LocaleRequirement
+
+MOCK_SERVER_RESPONSE = b"""
+<MockServerResponse>
+  <Request>
+    <IsValid>True</IsValid>
+  </Request>
+</MockServerResponse>"""
+
+
+class TestMTurkPostingWithQualificationsIn(AWSMockServiceTestCase):
+    connection_class = MTurkConnection
+
+    def setUp(self):
+        super(TestMTurkPostingWithQualificationsIn, self).setUp()
+
+    def test_locale_qualification_in(self):
+        self.set_http_response(
+            status_code=200,
+            body=MOCK_SERVER_RESPONSE)
+        q = ExternalQuestion(
+            external_url="http://samplesite";,
+            frame_height=800)
+        keywords = ['boto', 'test', 'doctest']
+        title = "Boto External Question Test"
+        annotation = 'An annotation from boto external question test'
+        qualifications = Qualifications()
+        test_requirement = LocaleRequirement(
+                          comparator='In',
+                          locale=[('US', 'WA'), 'CA'])
+        qualifications.add(test_requirement)
+        create_hit_rs = self.service_connection.create_hit(
+                        question=q,
+                        lifetime=60*65,
+                        max_assignments=2,
+                        title=title,
+                        keywords=keywords,
+                        reward=0.05,
+                        duration=60*6,
+                        approval_delay=60*60,
+                        annotation=annotation,
+                        qualifications=qualifications)
+        self.assert_request_parameters({
+            'QualificationRequirement.1.Comparator': 'In',
+            'QualificationRequirement.1.LocaleValue.1.Country': 'US',
+            'QualificationRequirement.1.LocaleValue.1.Subdivision': 'WA',
+            'QualificationRequirement.1.LocaleValue.2.Country': 'CA',
+            'QualificationRequirement.1.QualificationTypeId':
+                '00000000000000000071'},
+            ignore_params_values=['AWSAccessKeyId',
+                                  'SignatureVersion',
+                                  'Timestamp',
+                                  'Title',
+                                  'Question',
+                                  'AssignmentDurationInSeconds',
+                                  'RequesterAnnotation',
+                                  'Version',
+                                  'LifetimeInSeconds',
+                                  'AutoApprovalDelayInSeconds',
+                                  'Reward.1.Amount',
+                                  'Description',
+                                  'MaxAssignments',
+                                  'Reward.1.CurrencyCode',
+                                  'Keywords',
+                                  'Operation'])
+        self.assertEquals(create_hit_rs.status, True)
+
+    def test_locale_qualification_notin_in(self):
+        self.set_http_response(
+            status_code=200,
+            body=MOCK_SERVER_RESPONSE)
+        q = ExternalQuestion(
+            external_url="http://samplesite";,
+            frame_height=800)
+        keywords = ['boto', 'test', 'doctest']
+        title = "Boto External Question Test"
+        annotation = 'An annotation from boto external question test'
+        qualifications = Qualifications()
+        test_requirement1 = LocaleRequirement(
+                            comparator='NotIn',
+                            locale=[('US', 'WA'), 'CA'])
+        test_requirement2 = LocaleRequirement(
+                            comparator='In',
+                            locale=[('US', 'CA')])
+        qualifications.add(test_requirement1)
+        qualifications.add(test_requirement2)
+        create_hit_rs = self.service_connection.create_hit(
+                        question=q,
+                        lifetime=60*65,
+                        max_assignments=2,
+                        title=title,
+                        keywords=keywords,
+                        reward=0.05,
+                        duration=60*6,
+                        approval_delay=60*60,
+                        annotation=annotation,
+                        qualifications=qualifications)
+        self.assert_request_parameters({
+            'QualificationRequirement.1.Comparator': 'NotIn',
+            'QualificationRequirement.1.LocaleValue.1.Country': 'US',
+            'QualificationRequirement.1.LocaleValue.1.Subdivision': 'WA',
+            'QualificationRequirement.1.LocaleValue.2.Country': 'CA',
+            'QualificationRequirement.1.QualificationTypeId':
+                '00000000000000000071',
+            'QualificationRequirement.2.Comparator': 'In',
+            'QualificationRequirement.2.LocaleValue.1.Country': 'US',
+            'QualificationRequirement.2.LocaleValue.1.Subdivision': 'CA',
+            'QualificationRequirement.2.QualificationTypeId':
+                '00000000000000000071'},
+            ignore_params_values=['AWSAccessKeyId',
+                                  'SignatureVersion',
+                                  'Timestamp',
+                                  'Title',
+                                  'Question',
+                                  'AssignmentDurationInSeconds',
+                                  'RequesterAnnotation',
+                                  'Version',
+                                  'LifetimeInSeconds',
+                                  'AutoApprovalDelayInSeconds',
+                                  'Reward.1.Amount',
+                                  'Description',
+                                  'MaxAssignments',
+                                  'Reward.1.CurrencyCode',
+                                  'Keywords',
+                                  'Operation'])
+        self.assertEquals(create_hit_rs.status, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/boto-2.41.0/tests/unit/mturk/test_locale_qualification_notin.py 
new/boto-2.42.0/tests/unit/mturk/test_locale_qualification_notin.py
--- old/boto-2.41.0/tests/unit/mturk/test_locale_qualification_notin.py 
1970-01-01 01:00:00.000000000 +0100
+++ new/boto-2.42.0/tests/unit/mturk/test_locale_qualification_notin.py 
2016-07-20 00:20:46.000000000 +0200
@@ -0,0 +1,133 @@
+# -*- coding: utf-8 -*-
+
+from tests.unit import AWSMockServiceTestCase
+
+from boto.mturk.connection import MTurkConnection
+from boto.mturk.question import ExternalQuestion
+from boto.mturk.qualification import \
+     Qualifications, LocaleRequirement
+
+MOCK_SERVER_RESPONSE = b"""
+<MockServerResponse>
+  <Request>
+    <IsValid>True</IsValid>
+  </Request>
+</MockServerResponse>"""
+
+
+class TestMTurkPostingWithQualificationsNotin(AWSMockServiceTestCase):
+    connection_class = MTurkConnection
+
+    def setUp(self):
+        super(TestMTurkPostingWithQualificationsNotin, self).setUp()
+
+    def test_locale_qualification_notin(self):
+        self.set_http_response(
+            status_code=200,
+            body=MOCK_SERVER_RESPONSE)
+        q = ExternalQuestion(
+            external_url="http://samplesite";,
+            frame_height=800)
+        keywords = ['boto', 'test', 'doctest']
+        title = "Boto External Question Test"
+        annotation = 'An annotation from boto external question test'
+        qualifications = Qualifications()
+        test_requirement = LocaleRequirement(
+                           comparator='NotIn',
+                           locale=[('US', 'WA'), 'CA'])
+        qualifications.add(test_requirement)
+        create_hit_rs = self.service_connection.create_hit(
+                        question=q,
+                        lifetime=60*65,
+                        max_assignments=2,
+                        title=title,
+                        keywords=keywords,
+                        reward=0.05,
+                        duration=60*6,
+                        approval_delay=60*60,
+                        annotation=annotation,
+                        qualifications=qualifications)
+        self.assert_request_parameters({
+            'QualificationRequirement.1.Comparator': 'NotIn',
+            'QualificationRequirement.1.LocaleValue.1.Country': 'US',
+            'QualificationRequirement.1.LocaleValue.1.Subdivision': 'WA',
+            'QualificationRequirement.1.LocaleValue.2.Country': 'CA',
+            'QualificationRequirement.1.QualificationTypeId':
+                '00000000000000000071'},
+            ignore_params_values=['AWSAccessKeyId',
+                                  'SignatureVersion',
+                                  'Timestamp',
+                                  'Title',
+                                  'Question',
+                                  'AssignmentDurationInSeconds',
+                                  'RequesterAnnotation',
+                                  'Version',
+                                  'LifetimeInSeconds',
+                                  'AutoApprovalDelayInSeconds',
+                                  'Reward.1.Amount',
+                                  'Description',
+                                  'MaxAssignments',
+                                  'Reward.1.CurrencyCode',
+                                  'Keywords',
+                                  'Operation'])
+        self.assertEquals(create_hit_rs.status, True)
+
+    def test_locale_qualification_in_notin(self):
+        self.set_http_response(
+            status_code=200,
+            body=MOCK_SERVER_RESPONSE)
+        q = ExternalQuestion(
+            external_url="http://samplesite";,
+            frame_height=800)
+        keywords = ['boto', 'test', 'doctest']
+        title = "Boto External Question Test"
+        annotation = 'An annotation from boto external question test'
+        qualifications = Qualifications()
+        test_requirement1 = LocaleRequirement(
+                            comparator='In',
+                            locale=[('US', 'CA')])
+        test_requirement2 = LocaleRequirement(
+                            comparator='NotIn',
+                            locale=[('US', 'WA'), 'CA'])
+        qualifications.add(test_requirement1)
+        qualifications.add(test_requirement2)
+        create_hit_rs = self.service_connection.create_hit(
+                        question=q,
+                        lifetime=60*65,
+                        max_assignments=2,
+                        title=title,
+                        keywords=keywords,
+                        reward=0.05,
+                        duration=60*6,
+                        approval_delay=60*60,
+                        annotation=annotation,
+                        qualifications=qualifications)
+        self.assert_request_parameters({
+            'QualificationRequirement.1.Comparator': 'In',
+            'QualificationRequirement.1.LocaleValue.1.Country': 'US',
+            'QualificationRequirement.1.LocaleValue.1.Subdivision': 'CA',
+            'QualificationRequirement.1.QualificationTypeId':
+                '00000000000000000071',
+            'QualificationRequirement.2.Comparator': 'NotIn',
+            'QualificationRequirement.2.LocaleValue.1.Country': 'US',
+            'QualificationRequirement.2.LocaleValue.1.Subdivision': 'WA',
+            'QualificationRequirement.2.LocaleValue.2.Country': 'CA',
+            'QualificationRequirement.2.QualificationTypeId':
+                '00000000000000000071'},
+            ignore_params_values=['AWSAccessKeyId',
+                                  'SignatureVersion',
+                                  'Timestamp',
+                                  'Title',
+                                  'Question',
+                                  'AssignmentDurationInSeconds',
+                                  'RequesterAnnotation',
+                                  'Version',
+                                  'LifetimeInSeconds',
+                                  'AutoApprovalDelayInSeconds',
+                                  'Reward.1.Amount',
+                                  'Description',
+                                  'MaxAssignments',
+                                  'Reward.1.CurrencyCode',
+                                  'Keywords',
+                                  'Operation'])
+        self.assertEquals(create_hit_rs.status, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/boto-2.41.0/tests/unit/mturk/test_qualification_doesnotexist.py 
new/boto-2.42.0/tests/unit/mturk/test_qualification_doesnotexist.py
--- old/boto-2.41.0/tests/unit/mturk/test_qualification_doesnotexist.py 
1970-01-01 01:00:00.000000000 +0100
+++ new/boto-2.42.0/tests/unit/mturk/test_qualification_doesnotexist.py 
2016-07-20 00:20:46.000000000 +0200
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+from tests.unit import AWSMockServiceTestCase
+
+from boto.mturk.connection import MTurkConnection
+from boto.mturk.question import ExternalQuestion
+from boto.mturk.qualification import \
+     Qualifications, Requirement
+
+QUAL_NO_ONE_ELSE_HAS_ID = "333333333333333333333333333333"
+
+MOCK_SERVER_RESPONSE = b"""
+<MockServerResponse>
+  <Request>
+    <IsValid>True</IsValid>
+  </Request>
+</MockServerResponse>"""
+
+
+class TestMTurkPostingWithQualificationsDoesnotexist(AWSMockServiceTestCase):
+    connection_class = MTurkConnection
+
+    def setUp(self):
+        super(TestMTurkPostingWithQualificationsDoesnotexist, self).setUp()
+
+    def test_qualification_doesnotexist(self):
+        self.set_http_response(
+            status_code=200,
+            body=MOCK_SERVER_RESPONSE)
+        q = ExternalQuestion(
+            external_url="http://samplesite";,
+            frame_height=800)
+        keywords = ['boto', 'test', 'doctest']
+        title = "Boto External Question Test"
+        annotation = 'An annotation from boto external question test'
+        qualifications = Qualifications()
+        test_requirement = Requirement(
+                           qualification_type_id=QUAL_NO_ONE_ELSE_HAS_ID,
+                           comparator='DoesNotExist')
+        qualifications.add(test_requirement)
+        create_hit_rs = self.service_connection.create_hit(
+                        question=q,
+                        lifetime=60*65,
+                        max_assignments=2,
+                        title=title,
+                        keywords=keywords,
+                        reward=0.05,
+                        duration=60*6,
+                        approval_delay=60*60,
+                        annotation=annotation,
+                        qualifications=qualifications)
+        self.assert_request_parameters({
+            'QualificationRequirement.1.Comparator':
+                'DoesNotExist',
+            'QualificationRequirement.1.QualificationTypeId':
+                '333333333333333333333333333333'},
+            ignore_params_values=['AWSAccessKeyId',
+                                  'SignatureVersion',
+                                  'Timestamp',
+                                  'Title',
+                                  'Question',
+                                  'AssignmentDurationInSeconds',
+                                  'RequesterAnnotation',
+                                  'Version',
+                                  'LifetimeInSeconds',
+                                  'AutoApprovalDelayInSeconds',
+                                  'Reward.1.Amount',
+                                  'Description',
+                                  'MaxAssignments',
+                                  'Reward.1.CurrencyCode',
+                                  'Keywords',
+                                  'Operation'])
+        self.assertEquals(create_hit_rs.status, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/boto-2.41.0/tests/unit/mturk/test_qualification_exists.py 
new/boto-2.42.0/tests/unit/mturk/test_qualification_exists.py
--- old/boto-2.41.0/tests/unit/mturk/test_qualification_exists.py       
1970-01-01 01:00:00.000000000 +0100
+++ new/boto-2.42.0/tests/unit/mturk/test_qualification_exists.py       
2016-07-20 00:20:46.000000000 +0200
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+from tests.unit import AWSMockServiceTestCase
+
+from boto.mturk.connection import MTurkConnection
+from boto.mturk.question import ExternalQuestion
+from boto.mturk.qualification import \
+     Qualifications, Requirement
+
+QUAL_NO_ONE_ELSE_HAS_ID = "333333333333333333333333333333"
+
+MOCK_SERVER_RESPONSE = b"""
+<MockServerResponse>
+  <Request>
+    <IsValid>True</IsValid>
+  </Request>
+</MockServerResponse>"""
+
+
+class TestMTurkPostingWithQualificationsExists(AWSMockServiceTestCase):
+    connection_class = MTurkConnection
+
+    def setUp(self):
+        super(TestMTurkPostingWithQualificationsExists, self).setUp()
+
+    def test_qualification_exists(self):
+        self.set_http_response(
+            status_code=200,
+            body=MOCK_SERVER_RESPONSE)
+        q = ExternalQuestion(
+            external_url="http://samplesite";,
+            frame_height=800)
+        keywords = ['boto', 'test', 'doctest']
+        title = "Boto External Question Test"
+        annotation = 'An annotation from boto external question test'
+        qualifications = Qualifications()
+        test_requirement = Requirement(
+                           qualification_type_id=QUAL_NO_ONE_ELSE_HAS_ID,
+                           comparator='Exists')
+        qualifications.add(test_requirement)
+        create_hit_rs = self.service_connection.create_hit(
+                        question=q,
+                        lifetime=60*65,
+                        max_assignments=2,
+                        title=title,
+                        keywords=keywords,
+                        reward=0.05,
+                        duration=60*6,
+                        approval_delay=60*60,
+                        annotation=annotation,
+                        qualifications=qualifications)
+        self.assert_request_parameters({
+            'QualificationRequirement.1.Comparator':
+                'Exists',
+            'QualificationRequirement.1.QualificationTypeId':
+                '333333333333333333333333333333'},
+            ignore_params_values=['AWSAccessKeyId',
+                                  'SignatureVersion',
+                                  'Timestamp',
+                                  'Title',
+                                  'Question',
+                                  'AssignmentDurationInSeconds',
+                                  'RequesterAnnotation',
+                                  'Version',
+                                  'LifetimeInSeconds',
+                                  'AutoApprovalDelayInSeconds',
+                                  'Reward.1.Amount',
+                                  'Description',
+                                  'MaxAssignments',
+                                  'Reward.1.CurrencyCode',
+                                  'Keywords',
+                                  'Operation'])
+        self.assertEquals(create_hit_rs.status, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/boto-2.41.0/tests/unit/mturk/test_qualification_qualtypewithscore_in.py 
new/boto-2.42.0/tests/unit/mturk/test_qualification_qualtypewithscore_in.py
--- old/boto-2.41.0/tests/unit/mturk/test_qualification_qualtypewithscore_in.py 
1970-01-01 01:00:00.000000000 +0100
+++ new/boto-2.42.0/tests/unit/mturk/test_qualification_qualtypewithscore_in.py 
2016-07-20 00:20:46.000000000 +0200
@@ -0,0 +1,80 @@
+# -*- coding: utf-8 -*-
+
+from tests.unit import AWSMockServiceTestCase
+
+from boto.mturk.connection import MTurkConnection
+from boto.mturk.question import ExternalQuestion
+from boto.mturk.qualification import \
+     Qualifications, Requirement
+
+QUAL_WITH_SCORE_ID = "333333333333333333333333333333"
+
+MOCK_SERVER_RESPONSE = b"""
+<MockServerResponse>
+  <Request>
+    <IsValid>True</IsValid>
+  </Request>
+</MockServerResponse>"""
+
+
+class TestMTurkPostingWithQualQualtypewithscoreIn(AWSMockServiceTestCase):
+    connection_class = MTurkConnection
+
+    def setUp(self):
+        super(TestMTurkPostingWithQualQualtypewithscoreIn, self).setUp()
+
+    def test_qualification_qualtypewithscore_in(self):
+        self.set_http_response(
+            status_code=200,
+            body=MOCK_SERVER_RESPONSE)
+        q = ExternalQuestion(
+            external_url="http://samplesite";,
+            frame_height=800)
+        keywords = ['boto', 'test', 'doctest']
+        title = "Boto External Question Test"
+        annotation = 'An annotation from boto external question test'
+        qualifications = Qualifications()
+        test_requirement = Requirement(
+                           qualification_type_id=QUAL_WITH_SCORE_ID,
+                           comparator='In',
+                           integer_value=[100, 90, 80])
+        qualifications.add(test_requirement)
+        create_hit_rs = self.service_connection.create_hit(
+                        question=q,
+                        lifetime=60*65,
+                        max_assignments=2,
+                        title=title,
+                        keywords=keywords,
+                        reward=0.05,
+                        duration=60*6,
+                        approval_delay=60*60,
+                        annotation=annotation,
+                        qualifications=qualifications)
+        self.assert_request_parameters({
+            'QualificationRequirement.1.Comparator':
+                'In',
+            'QualificationRequirement.1.QualificationTypeId':
+                '333333333333333333333333333333',
+            'QualificationRequirement.1.IntegerValue.1':
+                100,
+            'QualificationRequirement.1.IntegerValue.2':
+                90,
+            'QualificationRequirement.1.IntegerValue.3':
+                80},
+            ignore_params_values=['AWSAccessKeyId',
+                                  'SignatureVersion',
+                                  'Timestamp',
+                                  'Title',
+                                  'Question',
+                                  'AssignmentDurationInSeconds',
+                                  'RequesterAnnotation',
+                                  'Version',
+                                  'LifetimeInSeconds',
+                                  'AutoApprovalDelayInSeconds',
+                                  'Reward.1.Amount',
+                                  'Description',
+                                  'MaxAssignments',
+                                  'Reward.1.CurrencyCode',
+                                  'Keywords',
+                                  'Operation'])
+        self.assertEquals(create_hit_rs.status, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/boto-2.41.0/tests/unit/s3/test_connection.py 
new/boto-2.42.0/tests/unit/s3/test_connection.py
--- old/boto-2.41.0/tests/unit/s3/test_connection.py    2016-04-28 
19:27:42.000000000 +0200
+++ new/boto-2.42.0/tests/unit/s3/test_connection.py    2016-07-20 
00:20:46.000000000 +0200
@@ -141,6 +141,37 @@
             'a937f5fbc125d98ac8f04c49e0204ea1526a7b8ca058000a54c192457be05b7d',
             url)
 
+    def test_sigv4_presign_respects_is_secure(self):
+        self.config = {
+            's3': {
+                'use-sigv4': True,
+            }
+        }
+
+        conn = self.connection_class(
+            aws_access_key_id='less',
+            aws_secret_access_key='more',
+            host='s3.amazonaws.com',
+            is_secure=True,
+        )
+
+        url = conn.generate_url_sigv4(86400, 'GET', bucket='examplebucket',
+                                      key='test.txt')
+        self.assertTrue(url.startswith(
+            'https://examplebucket.s3.amazonaws.com/test.txt?'))
+
+        conn = self.connection_class(
+            aws_access_key_id='less',
+            aws_secret_access_key='more',
+            host='s3.amazonaws.com',
+            is_secure=False,
+        )
+
+        url = conn.generate_url_sigv4(86400, 'GET', bucket='examplebucket',
+                                      key='test.txt')
+        self.assertTrue(url.startswith(
+            'http://examplebucket.s3.amazonaws.com/test.txt?'))
+
     def test_sigv4_presign_optional_params(self):
         self.config = {
             's3': {


Reply via email to