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': {
