[Python-modules-commits] [python-botocore] 01/06: New upstream version 1.5.75

Takaki Taniguchi takaki at moszumanska.debian.org
Tue Jun 27 10:09:23 UTC 2017


This is an automated email from the git hooks/post-receive script.

takaki pushed a commit to branch master
in repository python-botocore.

commit ed839048df6a994dcc38a6896d2c2866b622d1d3
Author: TANIGUCHI Takaki <takaki at asis.media-as.org>
Date:   Tue Jun 27 18:52:19 2017 +0900

    New upstream version 1.5.75
---
 PKG-INFO                                           |   21 +-
 README.rst                                         |   19 +-
 botocore.egg-info/PKG-INFO                         |   21 +-
 botocore.egg-info/SOURCES.txt                      |  147 +
 botocore/__init__.py                               |    4 +-
 botocore/args.py                                   |   20 +-
 botocore/auth.py                                   |   58 +-
 botocore/awsrequest.py                             |    3 +-
 botocore/client.py                                 |  132 +-
 botocore/compat.py                                 |    2 +-
 botocore/configloader.py                           |   22 +-
 botocore/credentials.py                            |  109 +-
 botocore/data/_retry.json                          |    9 +
 botocore/data/acm/2015-12-08/examples-1.json       |    5 +
 botocore/data/acm/2015-12-08/paginators-1.json     |    1 -
 botocore/data/acm/2015-12-08/service-2.json        |    6 +-
 .../data/apigateway/2015-07-09/examples-1.json     |    5 +
 .../data/apigateway/2015-07-09/paginators-1.json   |   18 +
 botocore/data/apigateway/2015-07-09/service-2.json |  378 +-
 .../2016-02-06/examples-1.json                     |  257 +
 .../2016-02-06/service-2.json                      |  203 +-
 botocore/data/appstream/2016-12-01/examples-1.json |    5 +
 .../data/appstream/2016-12-01/paginators-1.json    |    3 +
 botocore/data/appstream/2016-12-01/service-2.json  |  245 +-
 botocore/data/athena/2017-05-18/paginators-1.json  |    3 +
 botocore/data/athena/2017-05-18/service-2.json     |  873 ++
 .../data/autoscaling/2011-01-01/examples-1.json    | 1395 +++
 .../data/autoscaling/2011-01-01/service-2.json     |  277 +-
 botocore/data/batch/2016-08-10/examples-1.json     |  589 ++
 botocore/data/batch/2016-08-10/paginators-1.json   |    3 +
 botocore/data/batch/2016-08-10/service-2.json      |   94 +-
 botocore/data/budgets/2016-10-20/examples-1.json   |    5 +
 botocore/data/budgets/2016-10-20/paginators-1.json |    3 +
 botocore/data/budgets/2016-10-20/service-2.json    |    7 +-
 .../clouddirectory/2016-05-10/paginators-1.json    |    3 +
 .../data/clouddirectory/2016-05-10/service-2.json  | 1339 ++-
 .../data/cloudformation/2010-05-15/examples-1.json |  158 +
 .../cloudformation/2010-05-15/paginators-1.json    |   10 +
 .../data/cloudformation/2010-05-15/service-2.json  |   76 +-
 .../data/cloudfront/2016-11-25/examples-1.json     |    5 +
 .../data/cloudfront/2017-03-25/examples-1.json     |    5 +
 .../data/cloudfront/2017-03-25/paginators-1.json   |   32 +
 botocore/data/cloudfront/2017-03-25/service-2.json | 3607 ++++++++
 botocore/data/cloudfront/2017-03-25/waiters-2.json |   47 +
 botocore/data/cloudhsm/2014-05-30/examples-1.json  |    5 +
 .../data/cloudsearch/2013-01-01/paginators-1.json  |    3 +
 .../cloudsearchdomain/2013-01-01/examples-1.json   |    5 +
 .../data/cloudtrail/2013-11-01/examples-1.json     |    5 +
 .../data/cloudtrail/2013-11-01/paginators-1.json   |   10 +
 botocore/data/cloudtrail/2013-11-01/service-2.json |   38 +-
 .../data/cloudwatch/2010-08-01/examples-1.json     |    5 +
 botocore/data/cloudwatch/2010-08-01/service-2.json |   36 +-
 botocore/data/cloudwatch/2010-08-01/waiters-2.json |   18 +
 botocore/data/codebuild/2016-10-06/examples-1.json |    5 +
 .../data/codebuild/2016-10-06/paginators-1.json    |    3 +
 botocore/data/codebuild/2016-10-06/service-2.json  |   11 +-
 .../data/codecommit/2015-04-13/examples-1.json     |    5 +
 .../data/codecommit/2015-04-13/paginators-1.json   |   24 +-
 .../data/codedeploy/2014-10-06/examples-1.json     |    5 +
 .../data/codedeploy/2014-10-06/paginators-1.json   |   34 +
 botocore/data/codedeploy/2014-10-06/service-2.json |  297 +-
 .../data/codepipeline/2015-07-09/examples-1.json   |    5 +
 .../data/codepipeline/2015-07-09/paginators-1.json |    3 +
 .../data/codepipeline/2015-07-09/service-2.json    |  227 +-
 .../data/codestar/2017-04-19/paginators-1.json     |    3 +
 botocore/data/codestar/2017-04-19/service-2.json   | 1063 +++
 .../cognito-identity/2014-06-30/examples-1.json    |    5 +
 .../cognito-identity/2014-06-30/paginators-1.json  |    3 +
 .../cognito-identity/2014-06-30/service-2.json     |    6 +
 .../data/cognito-idp/2016-04-18/examples-1.json    |    5 +
 .../data/cognito-idp/2016-04-18/paginators-1.json  |    3 +
 .../data/cognito-idp/2016-04-18/service-2.json     |  943 ++-
 botocore/data/config/2014-11-12/examples-1.json    |    5 +
 botocore/data/config/2014-11-12/paginators-1.json  |    3 +-
 botocore/data/config/2014-11-12/service-2.json     |   28 +-
 botocore/data/cur/2017-01-06/examples-1.json       |    5 +
 botocore/data/cur/2017-01-06/paginators-1.json     |   10 +
 botocore/data/dax/2017-04-19/paginators-1.json     |    3 +
 botocore/data/dax/2017-04-19/service-2.json        | 1614 ++++
 .../data/devicefarm/2015-06-23/examples-1.json     | 1242 +++
 .../data/devicefarm/2015-06-23/paginators-1.json   |   18 +
 botocore/data/devicefarm/2015-06-23/service-2.json |  597 +-
 .../data/directconnect/2012-10-25/examples-1.json  |    5 +
 .../directconnect/2012-10-25/paginators-1.json     |    3 +
 .../data/directconnect/2012-10-25/service-2.json   |  493 +-
 botocore/data/discovery/2015-11-01/examples-1.json |    5 +
 .../data/discovery/2015-11-01/paginators-1.json    |    3 +
 botocore/data/discovery/2015-11-01/service-2.json  |  196 +-
 botocore/data/dms/2016-01-01/examples-1.json       |    5 +
 botocore/data/dms/2016-01-01/paginators-1.json     |    3 +
 botocore/data/dms/2016-01-01/service-2.json        |  707 +-
 botocore/data/ds/2015-04-16/examples-1.json        |    5 +
 botocore/data/dynamodb/2012-08-10/examples-1.json  |  628 ++
 botocore/data/dynamodb/2012-08-10/service-2.json   |  131 +-
 .../dynamodbstreams/2012-08-10/examples-1.json     |  212 +
 .../dynamodbstreams/2012-08-10/paginators-1.json   |    3 +
 .../data/dynamodbstreams/2012-08-10/service-2.json |   56 +-
 botocore/data/ec2/2016-09-15/waiters-2.json        |   18 +
 botocore/data/ec2/2016-11-15/paginators-1.json     |    6 +
 botocore/data/ec2/2016-11-15/service-2.json        | 8851 +++++++++++---------
 botocore/data/ec2/2016-11-15/waiters-2.json        |   18 +
 botocore/data/ecr/2015-09-21/examples-1.json       |  215 +
 botocore/data/ecs/2014-11-13/examples-1.json       |  883 ++
 botocore/data/ecs/2014-11-13/paginators-1.json     |   76 +-
 botocore/data/ecs/2014-11-13/service-2.json        |   60 +-
 botocore/data/efs/2015-02-01/examples-1.json       |  222 +
 botocore/data/efs/2015-02-01/paginators-1.json     |   22 +
 .../data/elasticache/2015-02-02/service-2.json     |  144 +-
 .../elasticbeanstalk/2010-12-01/examples-1.json    |    0
 .../elasticbeanstalk/2010-12-01/service-2.json     |  508 +-
 .../elastictranscoder/2012-09-25/examples-1.json   |    5 +
 botocore/data/elb/2012-06-01/examples-1.json       | 1036 +++
 botocore/data/elb/2012-06-01/service-2.json        |  124 +-
 botocore/data/elb/2012-06-01/waiters-2.json        |   31 +
 botocore/data/elbv2/2015-12-01/examples-1.json     | 1384 +++
 botocore/data/elbv2/2015-12-01/service-2.json      |   99 +-
 botocore/data/emr/2009-03-31/examples-1.json       |    5 +
 botocore/data/emr/2009-03-31/paginators-1.json     |    5 +
 botocore/data/emr/2009-03-31/service-2.json        |  608 +-
 botocore/data/endpoints.json                       | 3618 ++++----
 botocore/data/es/2015-01-01/paginators-1.json      |    3 +
 botocore/data/es/2015-01-01/service-2.json         |  306 +-
 botocore/data/events/2015-10-07/examples-1.json    |    5 +
 botocore/data/events/2015-10-07/paginators-1.json  |    3 +
 botocore/data/events/2015-10-07/service-2.json     |  685 +-
 botocore/data/firehose/2015-08-04/examples-1.json  |    5 +
 botocore/data/gamelift/2015-10-01/examples-1.json  |    5 +
 .../data/gamelift/2015-10-01/paginators-1.json     |    3 +
 botocore/data/gamelift/2015-10-01/service-2.json   | 1014 ++-
 botocore/data/glacier/2012-06-01/examples-1.json   |  806 ++
 botocore/data/glacier/2012-06-01/waiters-2.json    |   39 +
 botocore/data/greengrass/2017-06-07/service-2.json | 4058 +++++++++
 botocore/data/health/2016-08-04/examples-1.json    |    5 +
 botocore/data/iam/2010-05-08/examples-1.json       | 1191 +++
 botocore/data/iam/2010-05-08/paginators-1.json     |    2 +-
 botocore/data/iam/2010-05-08/service-2.json        |  208 +-
 botocore/data/inspector/2016-02-16/examples-1.json | 1140 +++
 .../data/inspector/2016-02-16/paginators-1.json    |    3 +
 botocore/data/inspector/2016-02-16/service-2.json  |  120 +-
 botocore/data/iot/2015-05-28/examples-1.json       |    5 +
 botocore/data/iot/2015-05-28/paginators-1.json     |    3 +
 botocore/data/iot/2015-05-28/service-2.json        | 3516 ++------
 botocore/data/kinesis/2013-12-02/examples-1.json   |    5 +
 botocore/data/kinesis/2013-12-02/service-2.json    |    8 +-
 .../kinesisanalytics/2015-08-14/examples-1.json    |    5 +
 .../kinesisanalytics/2015-08-14/paginators-1.json  |    3 +
 .../kinesisanalytics/2015-08-14/service-2.json     |  221 +-
 botocore/data/kms/2014-11-01/examples-1.json       |  815 ++
 botocore/data/kms/2014-11-01/service-2.json        |  233 +-
 botocore/data/lambda/2015-03-31/examples-1.json    |  614 ++
 botocore/data/lambda/2015-03-31/service-2.json     |  271 +-
 .../data/lex-models/2017-04-19/paginators-1.json   |    3 +
 botocore/data/lex-models/2017-04-19/service-2.json | 2936 +++++++
 .../data/lex-runtime/2016-11-28/paginators-1.json  |    3 +
 .../data/lex-runtime/2016-11-28/service-2.json     |  487 ++
 botocore/data/lightsail/2016-11-28/examples-1.json |    5 +
 .../data/lightsail/2016-11-28/paginators-1.json    |   97 +-
 botocore/data/lightsail/2016-11-28/service-2.json  |  112 +-
 botocore/data/logs/2014-03-28/examples-1.json      |    5 +
 botocore/data/logs/2014-03-28/service-2.json       |   28 +-
 .../machinelearning/2014-12-12/examples-1.json     |    5 +
 .../2017-01-11/paginators-1.json                   |    3 +
 .../2017-01-11/service-2.json                      |  182 +
 .../2015-07-01/examples-1.json                     |    5 +
 .../2015-07-01/paginators-1.json                   |    3 +
 .../2015-07-01/service-2.json                      |   10 +-
 .../meteringmarketplace/2016-01-14/examples-1.json |    5 +
 botocore/data/mturk/2017-01-17/paginators-1.json   |    3 +
 botocore/data/mturk/2017-01-17/service-2.json      | 2537 ++++++
 botocore/data/opsworks/2013-02-18/examples-1.json  |    5 +
 .../data/opsworks/2013-02-18/paginators-1.json     |   10 +
 botocore/data/opsworks/2013-02-18/service-2.json   |  467 +-
 .../data/opsworkscm/2016-11-01/examples-1.json     |    5 +
 .../data/opsworkscm/2016-11-01/paginators-1.json   |    3 +
 botocore/data/opsworkscm/2016-11-01/service-2.json |  152 +-
 .../organizations/2016-11-28/paginators-1.json     |    3 +
 .../data/organizations/2016-11-28/service-2.json   | 2641 ++++++
 botocore/data/pinpoint/2016-12-01/examples-1.json  |    5 +
 botocore/data/pinpoint/2016-12-01/service-2.json   | 2261 +++--
 botocore/data/polly/2016-06-10/examples-1.json     |  171 +
 botocore/data/polly/2016-06-10/paginators-1.json   |    3 +
 botocore/data/polly/2016-06-10/service-2.json      |   48 +-
 botocore/data/rds/2014-10-31/examples-1.json       | 1658 ++++
 botocore/data/rds/2014-10-31/service-2.json        |  261 +-
 .../data/rds/2014-10-31/service-2.sdk-extras.json  |   16 +
 botocore/data/redshift/2012-12-01/examples-1.json  |    5 +
 botocore/data/redshift/2012-12-01/service-2.json   |  107 +-
 .../data/rekognition/2016-06-27/examples-1.json    |  651 ++
 .../data/rekognition/2016-06-27/paginators-1.json  |   16 +
 .../data/rekognition/2016-06-27/service-2.json     |  335 +-
 .../2017-01-26/paginators-1.json                   |   20 +
 .../2017-01-26/service-2.json                      |  429 +
 botocore/data/route53/2013-04-01/examples-1.json   |    5 +
 botocore/data/route53/2013-04-01/service-2.json    |  431 +-
 .../data/route53domains/2014-05-15/service-2.json  |  368 +-
 botocore/data/s3/2006-03-01/examples-1.json        |    5 +
 .../data/servicecatalog/2015-12-10/examples-1.json |    5 +
 .../servicecatalog/2015-12-10/paginators-1.json    |    3 +
 .../data/servicecatalog/2015-12-10/service-2.json  |  195 +-
 botocore/data/ses/2010-12-01/examples-1.json       |  953 +++
 botocore/data/shield/2016-06-02/examples-1.json    |    5 +
 botocore/data/sms/2016-10-24/examples-1.json       |    5 +
 botocore/data/sms/2016-10-24/paginators-1.json     |   28 +
 botocore/data/snowball/2016-06-30/examples-1.json  |  442 +
 .../data/snowball/2016-06-30/paginators-1.json     |   16 +
 botocore/data/snowball/2016-06-30/service-2.json   |   73 +-
 botocore/data/sns/2010-03-31/examples-1.json       |    5 +
 botocore/data/sqs/2012-11-05/paginators-1.json     |    3 +
 botocore/data/sqs/2012-11-05/service-2.json        |   64 +-
 botocore/data/ssm/2014-11-06/examples-1.json       |    5 +
 botocore/data/ssm/2014-11-06/paginators-1.json     |   12 +
 botocore/data/ssm/2014-11-06/service-2.json        |  612 +-
 .../data/stepfunctions/2016-11-23/examples-1.json  |    5 +
 .../stepfunctions/2016-11-23/paginators-1.json     |   28 +
 .../data/storagegateway/2013-06-30/examples-1.json | 1381 +++
 .../data/storagegateway/2013-06-30/service-2.json  |  216 +-
 botocore/data/sts/2011-06-15/examples-1.json       |  206 +
 botocore/data/sts/2011-06-15/paginators-1.json     |    3 +
 botocore/data/sts/2011-06-15/service-2.json        |   10 +-
 botocore/data/support/2013-04-15/examples-1.json   |    5 +
 .../data/waf-regional/2016-11-28/examples-1.json   | 1017 +++
 .../data/waf-regional/2016-11-28/paginators-1.json |    3 +
 .../data/waf-regional/2016-11-28/service-2.json    |  365 +-
 botocore/data/waf/2015-08-24/examples-1.json       | 1017 +++
 botocore/data/waf/2015-08-24/service-2.json        |  366 +-
 .../data/workdocs/2016-05-01/paginators-1.json     |   25 +
 botocore/data/workdocs/2016-05-01/service-2.json   | 3448 ++++++++
 .../data/workspaces/2015-04-08/examples-1.json     |    5 +
 .../data/workspaces/2015-04-08/paginators-1.json   |   20 +
 botocore/data/workspaces/2015-04-08/service-2.json |   15 +-
 botocore/data/xray/2016-04-12/examples-1.json      |    5 +
 botocore/data/xray/2016-04-12/paginators-1.json    |    3 +
 botocore/data/xray/2016-04-12/service-2.json       |   64 +-
 botocore/docs/client.py                            |    4 +-
 botocore/docs/shape.py                             |    7 +
 botocore/docs/sharedexample.py                     |    4 +-
 botocore/handlers.py                               |   83 +-
 botocore/model.py                                  |    8 +-
 botocore/paginate.py                               |  162 +-
 botocore/parsers.py                                |   15 +-
 botocore/serialize.py                              |    5 +
 botocore/signers.py                                |   82 +-
 botocore/utils.py                                  |   71 +-
 botocore/validate.py                               |   25 +-
 docs/source/conf.py                                |    4 +-
 setup.cfg                                          |    2 +-
 tests/acceptance/features/steps/base.py            |    2 -
 tests/functional/docs/test_lex.py                  |   30 +
 .../functional/docs/test_shared_example_config.py  |  131 +
 tests/functional/test_cloudformation.py            |    1 -
 tests/functional/test_cognito_idp.py               |  120 +
 tests/functional/test_credentials.py               |    8 +-
 tests/functional/test_ec2.py                       |    3 +-
 tests/functional/test_endpoints.py                 |   40 +-
 tests/functional/test_iot_data.py                  |    1 -
 tests/functional/test_lex.py                       |   60 +
 tests/functional/test_mturk.py                     |   38 +
 tests/functional/test_paginate.py                  |   24 +
 tests/functional/test_rds.py                       |   24 +
 tests/functional/test_regions.py                   |    3 +-
 tests/functional/test_s3.py                        |  101 +-
 tests/functional/test_six_imports.py               |   54 +
 tests/integration/test_client.py                   |    4 +-
 tests/integration/test_credentials.py              |    1 -
 tests/integration/test_elastictranscoder.py        |    1 -
 tests/integration/test_s3.py                       |   10 +-
 tests/integration/test_utils.py                    |    3 -
 tests/unit/auth/test_signers.py                    |   61 +-
 tests/unit/auth/test_sigv4.py                      |    8 +-
 tests/unit/docs/test_client.py                     |    8 +-
 tests/unit/docs/test_service.py                    |    2 +-
 tests/unit/docs/test_sharedexample.py              |   18 +
 tests/unit/docs/test_utils.py                      |    2 -
 tests/unit/protocols/input/ec2.json                |   54 +
 tests/unit/protocols/input/json.json               |   65 +-
 tests/unit/protocols/input/query.json              |   60 +
 tests/unit/protocols/input/rest-json.json          |  371 +-
 tests/unit/protocols/input/rest-xml.json           |  267 +-
 tests/unit/protocols/output/rest-json.json         |   40 +
 tests/unit/protocols/output/rest-xml.json          |   55 +-
 .../unit/response_parsing/test_response_parsing.py |    8 +-
 tests/unit/test_args.py                            |   45 +
 tests/unit/test_client.py                          |   46 +-
 tests/unit/test_configloader.py                    |   49 +-
 tests/unit/test_credentials.py                     |  240 +-
 tests/unit/test_endpoint.py                        |    2 -
 tests/unit/test_handlers.py                        |   54 +
 tests/unit/test_model.py                           |   24 +
 tests/unit/test_paginate.py                        |  217 +-
 tests/unit/test_protocols.py                       |   16 +-
 tests/unit/test_regions.py                         |    6 +-
 tests/unit/test_s3_addressing.py                   |    1 -
 tests/unit/test_signers.py                         |  157 +-
 tests/unit/test_utils.py                           |  135 +-
 tests/unit/test_validate.py                        |   51 +-
 295 files changed, 70178 insertions(+), 12375 deletions(-)

diff --git a/PKG-INFO b/PKG-INFO
index 8a14a39..0ecebfa 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: botocore
-Version: 1.5.7
+Version: 1.5.75
 Summary: Low-level, data-driven core of boto 3.
 Home-page: https://github.com/boto/botocore
 Author: Amazon Web Services
@@ -21,7 +21,24 @@ Description: botocore
         `AWS CLI <https://github.com/aws/aws-cli>`__ as well as
         `boto3 <https://github.com/boto/boto3>`__.
         
-        `Documentation <https://botocore.readthedocs.io/en/latest/>`__
+        
+        Documentation
+        -------------
+        Documentation for ``botocore`` can be found on `Read the Docs <https://botocore.readthedocs.io/en/latest/>`__.
+        
+        
+        Getting Help
+        ------------
+        
+        We use GitHub issues for tracking bugs and feature requests and have limited
+        bandwidth to address them. Please use these community resources for getting
+        help. Please note many of the same resources available for ``boto3`` are
+        applicable for ``botocore``:
+        
+        * Ask a question on `Stack Overflow <https://stackoverflow.com/>`__ and tag it with `boto3 <https://stackoverflow.com/questions/tagged/boto3>`__
+        * Come join the AWS Python community chat on `gitter <https://gitter.im/boto/boto3>`__
+        * Open a support ticket with `AWS Support <https://console.aws.amazon.com/support/home#/>`__
+        * If it turns out that you may have found a bug, please `open an issue <https://github.com/boto/botocore/issues/new>`__
         
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/README.rst b/README.rst
index 3331faa..ed9decb 100644
--- a/README.rst
+++ b/README.rst
@@ -13,4 +13,21 @@ botocore package is the foundation for the
 `AWS CLI <https://github.com/aws/aws-cli>`__ as well as
 `boto3 <https://github.com/boto/boto3>`__.
 
-`Documentation <https://botocore.readthedocs.io/en/latest/>`__
+
+Documentation
+-------------
+Documentation for ``botocore`` can be found on `Read the Docs <https://botocore.readthedocs.io/en/latest/>`__.
+
+
+Getting Help
+------------
+
+We use GitHub issues for tracking bugs and feature requests and have limited
+bandwidth to address them. Please use these community resources for getting
+help. Please note many of the same resources available for ``boto3`` are
+applicable for ``botocore``:
+
+* Ask a question on `Stack Overflow <https://stackoverflow.com/>`__ and tag it with `boto3 <https://stackoverflow.com/questions/tagged/boto3>`__
+* Come join the AWS Python community chat on `gitter <https://gitter.im/boto/boto3>`__
+* Open a support ticket with `AWS Support <https://console.aws.amazon.com/support/home#/>`__
+* If it turns out that you may have found a bug, please `open an issue <https://github.com/boto/botocore/issues/new>`__
diff --git a/botocore.egg-info/PKG-INFO b/botocore.egg-info/PKG-INFO
index 8a14a39..0ecebfa 100644
--- a/botocore.egg-info/PKG-INFO
+++ b/botocore.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: botocore
-Version: 1.5.7
+Version: 1.5.75
 Summary: Low-level, data-driven core of boto 3.
 Home-page: https://github.com/boto/botocore
 Author: Amazon Web Services
@@ -21,7 +21,24 @@ Description: botocore
         `AWS CLI <https://github.com/aws/aws-cli>`__ as well as
         `boto3 <https://github.com/boto/boto3>`__.
         
-        `Documentation <https://botocore.readthedocs.io/en/latest/>`__
+        
+        Documentation
+        -------------
+        Documentation for ``botocore`` can be found on `Read the Docs <https://botocore.readthedocs.io/en/latest/>`__.
+        
+        
+        Getting Help
+        ------------
+        
+        We use GitHub issues for tracking bugs and feature requests and have limited
+        bandwidth to address them. Please use these community resources for getting
+        help. Please note many of the same resources available for ``boto3`` are
+        applicable for ``botocore``:
+        
+        * Ask a question on `Stack Overflow <https://stackoverflow.com/>`__ and tag it with `boto3 <https://stackoverflow.com/questions/tagged/boto3>`__
+        * Come join the AWS Python community chat on `gitter <https://gitter.im/boto/boto3>`__
+        * Open a support ticket with `AWS Support <https://console.aws.amazon.com/support/home#/>`__
+        * If it turns out that you may have found a bug, please `open an issue <https://github.com/boto/botocore/issues/new>`__
         
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/botocore.egg-info/SOURCES.txt b/botocore.egg-info/SOURCES.txt
index 81b500d..42a620d 100644
--- a/botocore.egg-info/SOURCES.txt
+++ b/botocore.egg-info/SOURCES.txt
@@ -40,18 +40,32 @@ botocore.egg-info/requires.txt
 botocore.egg-info/top_level.txt
 botocore/data/_retry.json
 botocore/data/endpoints.json
+botocore/data/acm/2015-12-08/examples-1.json
 botocore/data/acm/2015-12-08/paginators-1.json
 botocore/data/acm/2015-12-08/service-2.json
+botocore/data/apigateway/2015-07-09/examples-1.json
 botocore/data/apigateway/2015-07-09/paginators-1.json
 botocore/data/apigateway/2015-07-09/service-2.json
+botocore/data/application-autoscaling/2016-02-06/examples-1.json
 botocore/data/application-autoscaling/2016-02-06/paginators-1.json
 botocore/data/application-autoscaling/2016-02-06/service-2.json
+botocore/data/appstream/2016-12-01/examples-1.json
+botocore/data/appstream/2016-12-01/paginators-1.json
 botocore/data/appstream/2016-12-01/service-2.json
+botocore/data/athena/2017-05-18/paginators-1.json
+botocore/data/athena/2017-05-18/service-2.json
+botocore/data/autoscaling/2011-01-01/examples-1.json
 botocore/data/autoscaling/2011-01-01/paginators-1.json
 botocore/data/autoscaling/2011-01-01/service-2.json
+botocore/data/batch/2016-08-10/examples-1.json
+botocore/data/batch/2016-08-10/paginators-1.json
 botocore/data/batch/2016-08-10/service-2.json
+botocore/data/budgets/2016-10-20/examples-1.json
+botocore/data/budgets/2016-10-20/paginators-1.json
 botocore/data/budgets/2016-10-20/service-2.json
+botocore/data/clouddirectory/2016-05-10/paginators-1.json
 botocore/data/clouddirectory/2016-05-10/service-2.json
+botocore/data/cloudformation/2010-05-15/examples-1.json
 botocore/data/cloudformation/2010-05-15/paginators-1.json
 botocore/data/cloudformation/2010-05-15/service-2.json
 botocore/data/cloudformation/2010-05-15/waiters-2.json
@@ -91,39 +105,80 @@ botocore/data/cloudfront/2016-09-07/waiters-2.json
 botocore/data/cloudfront/2016-09-29/paginators-1.json
 botocore/data/cloudfront/2016-09-29/service-2.json
 botocore/data/cloudfront/2016-09-29/waiters-2.json
+botocore/data/cloudfront/2016-11-25/examples-1.json
 botocore/data/cloudfront/2016-11-25/paginators-1.json
 botocore/data/cloudfront/2016-11-25/service-2.json
 botocore/data/cloudfront/2016-11-25/waiters-2.json
+botocore/data/cloudfront/2017-03-25/examples-1.json
+botocore/data/cloudfront/2017-03-25/paginators-1.json
+botocore/data/cloudfront/2017-03-25/service-2.json
+botocore/data/cloudfront/2017-03-25/waiters-2.json
+botocore/data/cloudhsm/2014-05-30/examples-1.json
 botocore/data/cloudhsm/2014-05-30/service-2.json
 botocore/data/cloudsearch/2011-02-01/service-2.json
+botocore/data/cloudsearch/2013-01-01/paginators-1.json
 botocore/data/cloudsearch/2013-01-01/service-2.json
+botocore/data/cloudsearchdomain/2013-01-01/examples-1.json
 botocore/data/cloudsearchdomain/2013-01-01/service-2.json
+botocore/data/cloudtrail/2013-11-01/examples-1.json
+botocore/data/cloudtrail/2013-11-01/paginators-1.json
 botocore/data/cloudtrail/2013-11-01/service-2.json
+botocore/data/cloudwatch/2010-08-01/examples-1.json
 botocore/data/cloudwatch/2010-08-01/paginators-1.json
 botocore/data/cloudwatch/2010-08-01/service-2.json
+botocore/data/cloudwatch/2010-08-01/waiters-2.json
+botocore/data/codebuild/2016-10-06/examples-1.json
+botocore/data/codebuild/2016-10-06/paginators-1.json
 botocore/data/codebuild/2016-10-06/service-2.json
+botocore/data/codecommit/2015-04-13/examples-1.json
 botocore/data/codecommit/2015-04-13/paginators-1.json
 botocore/data/codecommit/2015-04-13/service-2.json
+botocore/data/codedeploy/2014-10-06/examples-1.json
+botocore/data/codedeploy/2014-10-06/paginators-1.json
 botocore/data/codedeploy/2014-10-06/service-2.json
 botocore/data/codedeploy/2014-10-06/waiters-2.json
+botocore/data/codepipeline/2015-07-09/examples-1.json
+botocore/data/codepipeline/2015-07-09/paginators-1.json
 botocore/data/codepipeline/2015-07-09/service-2.json
+botocore/data/codestar/2017-04-19/paginators-1.json
+botocore/data/codestar/2017-04-19/service-2.json
+botocore/data/cognito-identity/2014-06-30/examples-1.json
+botocore/data/cognito-identity/2014-06-30/paginators-1.json
 botocore/data/cognito-identity/2014-06-30/service-2.json
+botocore/data/cognito-idp/2016-04-18/examples-1.json
+botocore/data/cognito-idp/2016-04-18/paginators-1.json
 botocore/data/cognito-idp/2016-04-18/service-2.json
 botocore/data/cognito-sync/2014-06-30/service-2.json
+botocore/data/config/2014-11-12/examples-1.json
 botocore/data/config/2014-11-12/paginators-1.json
 botocore/data/config/2014-11-12/service-2.json
+botocore/data/cur/2017-01-06/examples-1.json
+botocore/data/cur/2017-01-06/paginators-1.json
 botocore/data/cur/2017-01-06/service-2.json
 botocore/data/datapipeline/2012-10-29/paginators-1.json
 botocore/data/datapipeline/2012-10-29/service-2.json
+botocore/data/dax/2017-04-19/paginators-1.json
+botocore/data/dax/2017-04-19/service-2.json
+botocore/data/devicefarm/2015-06-23/examples-1.json
 botocore/data/devicefarm/2015-06-23/paginators-1.json
 botocore/data/devicefarm/2015-06-23/service-2.json
+botocore/data/directconnect/2012-10-25/examples-1.json
+botocore/data/directconnect/2012-10-25/paginators-1.json
 botocore/data/directconnect/2012-10-25/service-2.json
+botocore/data/discovery/2015-11-01/examples-1.json
+botocore/data/discovery/2015-11-01/paginators-1.json
 botocore/data/discovery/2015-11-01/service-2.json
+botocore/data/dms/2016-01-01/examples-1.json
+botocore/data/dms/2016-01-01/paginators-1.json
 botocore/data/dms/2016-01-01/service-2.json
+botocore/data/ds/2015-04-16/examples-1.json
 botocore/data/ds/2015-04-16/service-2.json
+botocore/data/dynamodb/2012-08-10/examples-1.json
 botocore/data/dynamodb/2012-08-10/paginators-1.json
 botocore/data/dynamodb/2012-08-10/service-2.json
 botocore/data/dynamodb/2012-08-10/waiters-2.json
+botocore/data/dynamodbstreams/2012-08-10/examples-1.json
+botocore/data/dynamodbstreams/2012-08-10/paginators-1.json
 botocore/data/dynamodbstreams/2012-08-10/service-2.json
 botocore/data/ec2/2014-09-01/paginators-1.json
 botocore/data/ec2/2014-09-01/service-2.json
@@ -151,11 +206,15 @@ botocore/data/ec2/2016-11-15/examples-1.json
 botocore/data/ec2/2016-11-15/paginators-1.json
 botocore/data/ec2/2016-11-15/service-2.json
 botocore/data/ec2/2016-11-15/waiters-2.json
+botocore/data/ecr/2015-09-21/examples-1.json
 botocore/data/ecr/2015-09-21/paginators-1.json
 botocore/data/ecr/2015-09-21/service-2.json
+botocore/data/ecs/2014-11-13/examples-1.json
 botocore/data/ecs/2014-11-13/paginators-1.json
 botocore/data/ecs/2014-11-13/service-2.json
 botocore/data/ecs/2014-11-13/waiters-2.json
+botocore/data/efs/2015-02-01/examples-1.json
+botocore/data/efs/2015-02-01/paginators-1.json
 botocore/data/efs/2015-02-01/service-2.json
 botocore/data/elasticache/2014-09-30/paginators-1.json
 botocore/data/elasticache/2014-09-30/service-2.json
@@ -166,104 +225,186 @@ botocore/data/elasticache/2015-02-02/waiters-2.json
 botocore/data/elasticbeanstalk/2010-12-01/examples-1.json
 botocore/data/elasticbeanstalk/2010-12-01/paginators-1.json
 botocore/data/elasticbeanstalk/2010-12-01/service-2.json
+botocore/data/elastictranscoder/2012-09-25/examples-1.json
 botocore/data/elastictranscoder/2012-09-25/paginators-1.json
 botocore/data/elastictranscoder/2012-09-25/service-2.json
 botocore/data/elastictranscoder/2012-09-25/waiters-2.json
+botocore/data/elb/2012-06-01/examples-1.json
 botocore/data/elb/2012-06-01/paginators-1.json
 botocore/data/elb/2012-06-01/service-2.json
+botocore/data/elb/2012-06-01/waiters-2.json
+botocore/data/elbv2/2015-12-01/examples-1.json
 botocore/data/elbv2/2015-12-01/paginators-1.json
 botocore/data/elbv2/2015-12-01/service-2.json
+botocore/data/emr/2009-03-31/examples-1.json
 botocore/data/emr/2009-03-31/paginators-1.json
 botocore/data/emr/2009-03-31/service-2.json
 botocore/data/emr/2009-03-31/waiters-2.json
+botocore/data/es/2015-01-01/paginators-1.json
 botocore/data/es/2015-01-01/service-2.json
 botocore/data/events/2014-02-03/service-2.json
+botocore/data/events/2015-10-07/examples-1.json
+botocore/data/events/2015-10-07/paginators-1.json
 botocore/data/events/2015-10-07/service-2.json
+botocore/data/firehose/2015-08-04/examples-1.json
 botocore/data/firehose/2015-08-04/service-2.json
+botocore/data/gamelift/2015-10-01/examples-1.json
+botocore/data/gamelift/2015-10-01/paginators-1.json
 botocore/data/gamelift/2015-10-01/service-2.json
+botocore/data/glacier/2012-06-01/examples-1.json
 botocore/data/glacier/2012-06-01/paginators-1.json
 botocore/data/glacier/2012-06-01/service-2.json
+botocore/data/glacier/2012-06-01/waiters-2.json
+botocore/data/greengrass/2017-06-07/service-2.json
+botocore/data/health/2016-08-04/examples-1.json
 botocore/data/health/2016-08-04/paginators-1.json
 botocore/data/health/2016-08-04/service-2.json
+botocore/data/iam/2010-05-08/examples-1.json
 botocore/data/iam/2010-05-08/paginators-1.json
 botocore/data/iam/2010-05-08/service-2.json
 botocore/data/iam/2010-05-08/waiters-2.json
 botocore/data/importexport/2010-06-01/paginators-1.json
 botocore/data/importexport/2010-06-01/service-2.json
 botocore/data/inspector/2015-08-18/service-2.json
+botocore/data/inspector/2016-02-16/examples-1.json
+botocore/data/inspector/2016-02-16/paginators-1.json
 botocore/data/inspector/2016-02-16/service-2.json
 botocore/data/iot-data/2015-05-28/service-2.json
+botocore/data/iot/2015-05-28/examples-1.json
+botocore/data/iot/2015-05-28/paginators-1.json
 botocore/data/iot/2015-05-28/service-2.json
+botocore/data/kinesis/2013-12-02/examples-1.json
 botocore/data/kinesis/2013-12-02/paginators-1.json
 botocore/data/kinesis/2013-12-02/service-2.json
 botocore/data/kinesis/2013-12-02/waiters-2.json
+botocore/data/kinesisanalytics/2015-08-14/examples-1.json
+botocore/data/kinesisanalytics/2015-08-14/paginators-1.json
 botocore/data/kinesisanalytics/2015-08-14/service-2.json
+botocore/data/kms/2014-11-01/examples-1.json
 botocore/data/kms/2014-11-01/paginators-1.json
 botocore/data/kms/2014-11-01/service-2.json
 botocore/data/lambda/2014-11-11/service-2.json
+botocore/data/lambda/2015-03-31/examples-1.json
 botocore/data/lambda/2015-03-31/paginators-1.json
 botocore/data/lambda/2015-03-31/service-2.json
+botocore/data/lex-models/2017-04-19/paginators-1.json
+botocore/data/lex-models/2017-04-19/service-2.json
+botocore/data/lex-runtime/2016-11-28/paginators-1.json
+botocore/data/lex-runtime/2016-11-28/service-2.json
+botocore/data/lightsail/2016-11-28/examples-1.json
 botocore/data/lightsail/2016-11-28/paginators-1.json
 botocore/data/lightsail/2016-11-28/service-2.json
+botocore/data/logs/2014-03-28/examples-1.json
 botocore/data/logs/2014-03-28/paginators-1.json
 botocore/data/logs/2014-03-28/service-2.json
+botocore/data/machinelearning/2014-12-12/examples-1.json
 botocore/data/machinelearning/2014-12-12/paginators-1.json
 botocore/data/machinelearning/2014-12-12/service-2.json
 botocore/data/machinelearning/2014-12-12/waiters-2.json
+botocore/data/marketplace-entitlement/2017-01-11/paginators-1.json
+botocore/data/marketplace-entitlement/2017-01-11/service-2.json
+botocore/data/marketplacecommerceanalytics/2015-07-01/examples-1.json
+botocore/data/marketplacecommerceanalytics/2015-07-01/paginators-1.json
 botocore/data/marketplacecommerceanalytics/2015-07-01/service-2.json
+botocore/data/meteringmarketplace/2016-01-14/examples-1.json
 botocore/data/meteringmarketplace/2016-01-14/service-2.json
+botocore/data/mturk/2017-01-17/paginators-1.json
+botocore/data/mturk/2017-01-17/service-2.json
+botocore/data/opsworks/2013-02-18/examples-1.json
+botocore/data/opsworks/2013-02-18/paginators-1.json
 botocore/data/opsworks/2013-02-18/service-2.json
 botocore/data/opsworks/2013-02-18/waiters-2.json
+botocore/data/opsworkscm/2016-11-01/examples-1.json
+botocore/data/opsworkscm/2016-11-01/paginators-1.json
 botocore/data/opsworkscm/2016-11-01/service-2.json
 botocore/data/opsworkscm/2016-11-01/waiters-2.json
+botocore/data/organizations/2016-11-28/paginators-1.json
+botocore/data/organizations/2016-11-28/service-2.json
+botocore/data/pinpoint/2016-12-01/examples-1.json
 botocore/data/pinpoint/2016-12-01/service-2.json
+botocore/data/polly/2016-06-10/examples-1.json
+botocore/data/polly/2016-06-10/paginators-1.json
 botocore/data/polly/2016-06-10/service-2.json
 botocore/data/rds/2014-09-01/paginators-1.json
 botocore/data/rds/2014-09-01/service-2.json
 botocore/data/rds/2014-09-01/waiters-2.json
+botocore/data/rds/2014-10-31/examples-1.json
 botocore/data/rds/2014-10-31/paginators-1.json
 botocore/data/rds/2014-10-31/service-2.json
 botocore/data/rds/2014-10-31/service-2.sdk-extras.json
 botocore/data/rds/2014-10-31/waiters-2.json
+botocore/data/redshift/2012-12-01/examples-1.json
 botocore/data/redshift/2012-12-01/paginators-1.json
 botocore/data/redshift/2012-12-01/service-2.json
 botocore/data/redshift/2012-12-01/waiters-2.json
+botocore/data/rekognition/2016-06-27/examples-1.json
+botocore/data/rekognition/2016-06-27/paginators-1.json
 botocore/data/rekognition/2016-06-27/service-2.json
+botocore/data/resourcegroupstaggingapi/2017-01-26/paginators-1.json
+botocore/data/resourcegroupstaggingapi/2017-01-26/service-2.json
+botocore/data/route53/2013-04-01/examples-1.json
 botocore/data/route53/2013-04-01/paginators-1.json
 botocore/data/route53/2013-04-01/service-2.json
 botocore/data/route53/2013-04-01/waiters-2.json
 botocore/data/route53domains/2014-05-15/paginators-1.json
 botocore/data/route53domains/2014-05-15/service-2.json
+botocore/data/s3/2006-03-01/examples-1.json
 botocore/data/s3/2006-03-01/paginators-1.json
 botocore/data/s3/2006-03-01/service-2.json
 botocore/data/s3/2006-03-01/waiters-2.json
 botocore/data/sdb/2009-04-15/paginators-1.json
 botocore/data/sdb/2009-04-15/service-2.json
+botocore/data/servicecatalog/2015-12-10/examples-1.json
+botocore/data/servicecatalog/2015-12-10/paginators-1.json
 botocore/data/servicecatalog/2015-12-10/service-2.json
+botocore/data/ses/2010-12-01/examples-1.json
 botocore/data/ses/2010-12-01/paginators-1.json
 botocore/data/ses/2010-12-01/service-2.json
 botocore/data/ses/2010-12-01/waiters-2.json
+botocore/data/shield/2016-06-02/examples-1.json
 botocore/data/shield/2016-06-02/service-2.json
+botocore/data/sms/2016-10-24/examples-1.json
+botocore/data/sms/2016-10-24/paginators-1.json
 botocore/data/sms/2016-10-24/service-2.json
+botocore/data/snowball/2016-06-30/examples-1.json
+botocore/data/snowball/2016-06-30/paginators-1.json
 botocore/data/snowball/2016-06-30/service-2.json
+botocore/data/sns/2010-03-31/examples-1.json
 botocore/data/sns/2010-03-31/paginators-1.json
 botocore/data/sns/2010-03-31/service-2.json
 botocore/data/sqs/2012-11-05/examples-1.json
+botocore/data/sqs/2012-11-05/paginators-1.json
 botocore/data/sqs/2012-11-05/service-2.json
+botocore/data/ssm/2014-11-06/examples-1.json
 botocore/data/ssm/2014-11-06/paginators-1.json
 botocore/data/ssm/2014-11-06/service-2.json
+botocore/data/stepfunctions/2016-11-23/examples-1.json
+botocore/data/stepfunctions/2016-11-23/paginators-1.json
 botocore/data/stepfunctions/2016-11-23/service-2.json
+botocore/data/storagegateway/2013-06-30/examples-1.json
 botocore/data/storagegateway/2013-06-30/paginators-1.json
 botocore/data/storagegateway/2013-06-30/service-2.json
+botocore/data/sts/2011-06-15/examples-1.json
+botocore/data/sts/2011-06-15/paginators-1.json
 botocore/data/sts/2011-06-15/service-2.json
+botocore/data/support/2013-04-15/examples-1.json
 botocore/data/support/2013-04-15/paginators-1.json
 botocore/data/support/2013-04-15/service-2.json
 botocore/data/swf/2012-01-25/paginators-1.json
 botocore/data/swf/2012-01-25/service-2.json
+botocore/data/waf-regional/2016-11-28/examples-1.json
+botocore/data/waf-regional/2016-11-28/paginators-1.json
 botocore/data/waf-regional/2016-11-28/service-2.json
+botocore/data/waf/2015-08-24/examples-1.json
 botocore/data/waf/2015-08-24/paginators-1.json
 botocore/data/waf/2015-08-24/service-2.json
+botocore/data/workdocs/2016-05-01/paginators-1.json
+botocore/data/workdocs/2016-05-01/service-2.json
+botocore/data/workspaces/2015-04-08/examples-1.json
+botocore/data/workspaces/2015-04-08/paginators-1.json
 botocore/data/workspaces/2015-04-08/service-2.json
+botocore/data/xray/2016-04-12/examples-1.json
+botocore/data/xray/2016-04-12/paginators-1.json
 botocore/data/xray/2016-04-12/service-2.json
 botocore/docs/__init__.py
 botocore/docs/client.py
@@ -445,13 +586,16 @@ tests/functional/test_client_class_names.py
 tests/functional/test_client_metadata.py
 tests/functional/test_cloudformation.py
 tests/functional/test_cloudsearchdomain.py
+tests/functional/test_cognito_idp.py
 tests/functional/test_credentials.py
 tests/functional/test_ec2.py
 tests/functional/test_endpoints.py
 tests/functional/test_iot_data.py
+tests/functional/test_lex.py
 tests/functional/test_loaders.py
 tests/functional/test_machinelearning.py
 tests/functional/test_model_completeness.py
+tests/functional/test_mturk.py
 tests/functional/test_paginate.py
 tests/functional/test_paginator_config.py
 tests/functional/test_public_apis.py
@@ -459,6 +603,7 @@ tests/functional/test_rds.py
 tests/functional/test_regions.py
 tests/functional/test_s3.py
 tests/functional/test_session.py
+tests/functional/test_six_imports.py
 tests/functional/test_stub.py
 tests/functional/test_waiter_config.py
 tests/functional/docs/__init__.py
@@ -466,7 +611,9 @@ tests/functional/docs/test_alias.py
 tests/functional/docs/test_autoscaling.py
 tests/functional/docs/test_ec2.py
 tests/functional/docs/test_glacier.py
+tests/functional/docs/test_lex.py
 tests/functional/docs/test_s3.py
+tests/functional/docs/test_shared_example_config.py
 tests/functional/docs/test_streaming_body.py
 tests/functional/leak/__init__.py
 tests/functional/leak/test_resource_leaks.py
diff --git a/botocore/__init__.py b/botocore/__init__.py
index 9cff539..f54c557 100644
--- a/botocore/__init__.py
+++ b/botocore/__init__.py
@@ -16,7 +16,7 @@ import os
 import re
 import logging
 
-__version__ = '1.5.7'
+__version__ = '1.5.75'
 
 
 class NullHandler(logging.Handler):
@@ -45,6 +45,8 @@ _xform_cache = {
     ('DescribeStorediSCSIVolumes', '-'): 'describe-stored-iscsi-volumes',
     ('CreateStorediSCSIVolume', '_'): 'create_stored_iscsi_volume',
     ('CreateStorediSCSIVolume', '-'): 'create-stored-iscsi-volume',
+    ('ListHITsForQualificationType', '_'): 'list_hits_for_qualification_type',
+    ('ListHITsForQualificationType', '-'): 'list-hits-for-qualification-type',
 }
 # The items in this dict represent partial renames to apply globally to all
 # services which might have a matching argument or operation. This way a
diff --git a/botocore/args.py b/botocore/args.py
index 54f4290..9e69a53 100644
--- a/botocore/args.py
+++ b/botocore/args.py
@@ -52,9 +52,16 @@ class ClientArgsCreator(object):
         s3_config = final_args['s3_config']
         partition = endpoint_config['metadata'].get('partition', None)
 
+        signing_region = endpoint_config['signing_region']
+        endpoint_region_name = endpoint_config['region_name']
+        if signing_region is None and endpoint_region_name is None:
+            signing_region, endpoint_region_name = \
+                self._get_default_s3_region(service_name, endpoint_bridge)
+            config_kwargs['region_name'] = endpoint_region_name
+
         event_emitter = copy.copy(self._event_emitter)
         signer = RequestSigner(
-            service_name, endpoint_config['signing_region'],
+            service_name, signing_region,
             endpoint_config['signing_name'],
             endpoint_config['signature_version'],
             credentials, event_emitter)
@@ -64,7 +71,7 @@ class ClientArgsCreator(object):
         endpoint_creator = EndpointCreator(event_emitter)
 
         endpoint = endpoint_creator.create_endpoint(
-            service_model, region_name=endpoint_config['region_name'],
+            service_model, region_name=endpoint_region_name,
             endpoint_url=endpoint_config['endpoint_url'], verify=verify,
             response_parser_factory=self._response_parser_factory,
             max_pool_connections=new_config.max_pool_connections,
@@ -187,3 +194,12 @@ class ClientArgsCreator(object):
             else:
                 config_copy[key] = False
         return config_copy
+
+    def _get_default_s3_region(self, service_name, endpoint_bridge):
+        # If a user is providing a custom URL, the endpoint resolver will
+        # refuse to infer a signing region. If we want to default to s3v4,
+        # we have to account for this.
+        if service_name == 's3':
+            endpoint = endpoint_bridge.resolve('s3')
+            return endpoint['signing_region'], endpoint['region_name']
+        return None, None
diff --git a/botocore/auth.py b/botocore/auth.py
index f3fd117..7478580 100644
--- a/botocore/auth.py
+++ b/botocore/auth.py
@@ -33,6 +33,7 @@ from botocore.compat import encodebytes
 from botocore.compat import six
 from botocore.compat import json
 from botocore.compat import MD5_AVAILABLE
+from botocore.compat import ensure_unicode
 
 logger = logging.getLogger(__name__)
 
@@ -50,6 +51,7 @@ SIGNED_HEADERS_BLACKLIST = [
     'user-agent',
     'x-amzn-trace-id',
 ]
+UNSIGNED_PAYLOAD = 'UNSIGNED-PAYLOAD'
 
 
 class BaseSigner(object):
@@ -227,17 +229,29 @@ class SigV4Auth(BaseSigner):
         headers = []
         sorted_header_names = sorted(set(headers_to_sign))
         for key in sorted_header_names:
-            value = ','.join(v.strip() for v in
+            value = ','.join(self._header_value(v) for v in
                              sorted(headers_to_sign.get_all(key)))
-            headers.append('%s:%s' % (key, value))
+            headers.append('%s:%s' % (key, ensure_unicode(value)))
         return '\n'.join(headers)
 
+    def _header_value(self, value):
+        # From the sigv4 docs:
+        # Lowercase(HeaderName) + ':' + Trimall(HeaderValue)
+        #
+        # The Trimall function removes excess white space before and after
+        # values, and converts sequential spaces to a single space.
+        return ' '.join(value.split())
+
     def signed_headers(self, headers_to_sign):
         l = ['%s' % n.lower().strip() for n in set(headers_to_sign)]
         l = sorted(l)
         return ';'.join(l)
 
     def payload(self, request):
+        if not self._should_sha256_sign_payload(request):
+            # When payload signing is disabled, we use this static string in
+            # place of the payload checksum.
+            return UNSIGNED_PAYLOAD
         if request.body and hasattr(request.body, 'seek'):
             position = request.body.tell()
             read_chunksize = functools.partial(request.body.read,
@@ -255,6 +269,16 @@ class SigV4Auth(BaseSigner):
         else:
             return EMPTY_SHA256_HASH
 
+    def _should_sha256_sign_payload(self, request):
+        # Payloads will always be signed over insecure connections.
+        if not request.url.startswith('https'):
+            return True
+
+        # Certain operations may have payload signing disabled by default.
+        # Since we don't have access to the operation model, we pass in this
+        # bit of metadata through the request context.
+        return request.context.get('payload_signing_enabled', True)
+
     def canonical_request(self, request):
         cr = [request.method.upper()]
         path = self._normalize_url_path(urlsplit(request.url).path)
@@ -346,6 +370,11 @@ class SigV4Auth(BaseSigner):
                 del request.headers['X-Amz-Security-Token']
             request.headers['X-Amz-Security-Token'] = self.credentials.token
 
+        if not request.context.get('payload_signing_enabled', True):
+            if 'X-Amz-Content-SHA256' in request.headers:
+                del request.headers['X-Amz-Content-SHA256']
+            request.headers['X-Amz-Content-SHA256'] = UNSIGNED_PAYLOAD
+
     def _set_necessary_date_headers(self, request):
         # The spec allows for either the Date _or_ the X-Amz-Date value to be
         # used so we check both.  If there's a Date header, we use the date
@@ -383,10 +412,7 @@ class S3SigV4Auth(SigV4Auth):
         if 'X-Amz-Content-SHA256' in request.headers:
             del request.headers['X-Amz-Content-SHA256']
 
-        if self._should_sha256_sign_payload(request):
-            request.headers['X-Amz-Content-SHA256'] = self.payload(request)
-        else:
-            request.headers['X-Amz-Content-SHA256'] = 'UNSIGNED-PAYLOAD'
+        request.headers['X-Amz-Content-SHA256'] = self.payload(request)
 
     def _should_sha256_sign_payload(self, request):
         # S3 allows optional body signing, so to minimize the performance
@@ -400,15 +426,27 @@ class S3SigV4Auth(SigV4Auth):
         if s3_config is None:
             s3_config = {}
 
+        # The explicit configuration takes precedence over any implicit
+        # configuration.
         sign_payload = s3_config.get('payload_signing_enabled', None)
         if sign_payload is not None:
             return sign_payload
 
-        if 'Content-MD5' in request.headers and 'https' in request.url and \
-                request.context.get('has_streaming_input', False):
+        # We require that both content-md5 be present and https be enabled
+        # to implicitly disable body signing. The combination of TLS and
+        # content-md5 is sufficiently secure and durable for us to be
+        # confident in the request without body signing.
+        if not request.url.startswith('https') or \
+                'Content-MD5' not in request.headers:
+            return True
+
+        # If the input is streaming we disable body signing by default.
+        if request.context.get('has_streaming_input', False):
             return False
 
-        return True
+        # If the S3-specific checks had no results, delegate to the generic
+        # checks.
+        return super(S3SigV4Auth, self)._should_sha256_sign_payload(request)
 
     def _normalize_url_path(self, path):
         # For S3, we do not normalize the path.
@@ -514,7 +552,7 @@ class S3SigV4QueryAuth(SigV4QueryAuth):
         # "You don't include a payload hash in the Canonical Request, because
         # when you create a presigned URL, you don't know anything about the
         # payload. Instead, you use a constant string "UNSIGNED-PAYLOAD".
-        return "UNSIGNED-PAYLOAD"
+        return UNSIGNED_PAYLOAD
 
 
 class S3SigV4PostAuth(SigV4Auth):
diff --git a/botocore/awsrequest.py b/botocore/awsrequest.py
index acd5092..c26ebc0 100644
--- a/botocore/awsrequest.py
+++ b/botocore/awsrequest.py
@@ -19,7 +19,8 @@ import socket
 import inspect
 
 from botocore.compat import six
-from botocore.compat import HTTPHeaders, HTTPResponse, urlunsplit, urlsplit
+from botocore.compat import HTTPHeaders, HTTPResponse, urlunsplit, urlsplit,\
+    urlparse
 from botocore.exceptions import UnseekableStreamError
 from botocore.utils import percent_encode_sequence
 from botocore.vendored.requests import models
diff --git a/botocore/client.py b/botocore/client.py
index 592ef17..e7a81c5 100644
--- a/botocore/client.py
+++ b/botocore/client.py
@@ -33,6 +33,7 @@ from botocore.utils import switch_to_virtual_host_style
 from botocore.utils import S3_ACCELERATE_WHITELIST
 from botocore.args import ClientArgsCreator
 from botocore.compat import urlsplit
+from botocore import UNSIGNED
 # Keep this imported.  There's pre-existing code that uses
 # "from botocore.client import Config".
 from botocore.config import Config
@@ -69,7 +70,9 @@ class ClientCreator(object):
             service_model, region_name, is_secure, endpoint_url,
             verify, credentials, scoped_config, client_config, endpoint_bridge)
         service_client = cls(**client_args)
-        self._register_s3_events(service_client, endpoint_bridge, endpoint_url)
+        self._register_s3_events(
+            service_client, endpoint_bridge, endpoint_url, client_config,
+            scoped_config)
         return service_client
 
     def create_client_class(self, service_name, api_version=None):
@@ -116,7 +119,8 @@ class ClientCreator(object):
         self._event_emitter.register('needs-retry.%s' % endpoint_prefix,
... 111129 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-botocore.git



More information about the Python-modules-commits mailing list