From 059d040bb741fc833df109555032d9db8f5a942e Mon Sep 17 00:00:00 2001 From: Packit Date: Mon, 15 Jul 2024 08:04:25 +0000 Subject: [PATCH] Update to 2.17.13 upstream release - Resolves: rhbz#2295429 Upstream tag: 2.17.13 Upstream commit: 3c6bd732 Commit authored by Packit automation (https://packit.dev/) --- .gitignore | 1 + README.packit | 2 +- awscli2.spec | 2 +- python312.patch | 375 +++++++++++------------------------------------- sources | 2 +- 5 files changed, 84 insertions(+), 298 deletions(-) diff --git a/.gitignore b/.gitignore index f8f6cb0..4c9b925 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ /aws-cli-2.17.1.tar.gz /aws-cli-2.17.2.tar.gz /aws-cli-2.17.6.tar.gz +/aws-cli-2.17.13.tar.gz diff --git a/README.packit b/README.packit index f2be23e..2499381 100644 --- a/README.packit +++ b/README.packit @@ -1,3 +1,3 @@ This repository is maintained by packit. https://packit.dev/ -The file was generated using packit 0.97.3.post1.dev7+g1954e49a. +The file was generated using packit 0.98.0. diff --git a/awscli2.spec b/awscli2.spec index 31da031..a887d8d 100644 --- a/awscli2.spec +++ b/awscli2.spec @@ -1,7 +1,7 @@ %global pkgname aws-cli Name: awscli2 -Version: 2.17.6 +Version: 2.17.13 Release: %autorelease Summary: Universal Command Line Environment for AWS, version 2 diff --git a/python312.patch b/python312.patch index 40ba119..99348af 100644 --- a/python312.patch +++ b/python312.patch @@ -1,49 +1,8 @@ -diff --git a/awscli/bcdoc/docstringparser.py b/awscli/bcdoc/docstringparser.py -index 868bd5d..3eaf662 100644 ---- a/awscli/bcdoc/docstringparser.py -+++ b/awscli/bcdoc/docstringparser.py -@@ -11,9 +11,10 @@ - # ANY KIND, either express or implied. See the License for the specific - # language governing permissions and limitations under the License. - from botocore.compat import six -+from html import parser as html_parser - - --class DocStringParser(six.moves.html_parser.HTMLParser): -+class DocStringParser(html_parser.HTMLParser): - """ - A simple HTML parser. Focused on converting the subset of HTML - that appears in the documentation strings of the JSON models into -@@ -23,20 +24,20 @@ class DocStringParser(six.moves.html_parser.HTMLParser): - def __init__(self, doc): - self.tree = None - self.doc = doc -- six.moves.html_parser.HTMLParser.__init__(self) -+ html_parser.HTMLParser.__init__(self) - - def reset(self): -- six.moves.html_parser.HTMLParser.reset(self) -+ html_parser.HTMLParser.reset(self) - self.tree = HTMLTree(self.doc) - - def feed(self, data): - # HTMLParser is an old style class, so the super() method will not work. -- six.moves.html_parser.HTMLParser.feed(self, data) -+ html_parser.HTMLParser.feed(self, data) - self.tree.write() - self.tree = HTMLTree(self.doc) - - def close(self): -- six.moves.html_parser.HTMLParser.close(self) -+ html_parser.HTMLParser.close(self) - # Write if there is anything remaining. - self.tree.write() - self.tree = HTMLTree(self.doc) diff --git a/awscli/botocore/auth.py b/awscli/botocore/auth.py -index e8c83ad..e50be2a 100644 +index 0c1bc74a..de33e127 100644 --- a/awscli/botocore/auth.py +++ b/awscli/botocore/auth.py -@@ -396,7 +396,7 @@ class SigV4Auth(BaseSigner): +@@ -395,7 +395,7 @@ class SigV4Auth(BaseSigner): def add_auth(self, request): if self.credentials is None: raise NoCredentialsError() @@ -52,7 +11,7 @@ index e8c83ad..e50be2a 100644 request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP) # This could be a retry. Make sure the previous # authorization header is removed first. -@@ -440,7 +440,7 @@ class SigV4Auth(BaseSigner): +@@ -439,7 +439,7 @@ class SigV4Auth(BaseSigner): if 'Date' in request.headers: del request.headers['Date'] datetime_timestamp = datetime.datetime.strptime( @@ -61,7 +20,7 @@ index e8c83ad..e50be2a 100644 request.headers['Date'] = formatdate( int(calendar.timegm(datetime_timestamp.timetuple()))) if 'X-Amz-Date' in request.headers: -@@ -528,7 +528,7 @@ class S3ExpressPostAuth(S3ExpressAuth): +@@ -527,7 +527,7 @@ class S3ExpressPostAuth(S3ExpressAuth): REQUIRES_IDENTITY_CACHE = True def add_auth(self, request): @@ -70,7 +29,7 @@ index e8c83ad..e50be2a 100644 request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP) fields = {} -@@ -781,7 +781,7 @@ class S3SigV4PostAuth(SigV4Auth): +@@ -780,7 +780,7 @@ class S3SigV4PostAuth(SigV4Auth): http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html """ def add_auth(self, request): @@ -79,46 +38,8 @@ index e8c83ad..e50be2a 100644 request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP) fields = {} -diff --git a/awscli/botocore/compat.py b/awscli/botocore/compat.py -index b189271..de182f4 100644 ---- a/awscli/botocore/compat.py -+++ b/awscli/botocore/compat.py -@@ -33,7 +33,7 @@ from urllib3 import exceptions - logger = logging.getLogger(__name__) - - --from botocore.vendored.six.moves import http_client -+from http import client as http_client - - class HTTPHeaders(http_client.HTTPMessage): - pass -diff --git a/awscli/botocore/configloader.py b/awscli/botocore/configloader.py -index 3d1de2f..d8120c6 100644 ---- a/awscli/botocore/configloader.py -+++ b/awscli/botocore/configloader.py -@@ -18,6 +18,7 @@ import sys - - import botocore.exceptions - from botocore.compat import six -+import configparser - - - def multi_file_load_config(*filenames): -@@ -143,10 +144,10 @@ def raw_config_parse(config_filename, parse_subsections=True): - path = os.path.expanduser(path) - if not os.path.isfile(path): - raise botocore.exceptions.ConfigNotFound(path=_unicode_path(path)) -- cp = six.moves.configparser.RawConfigParser() -+ cp = configparser.RawConfigParser() - try: - cp.read([path]) -- except (six.moves.configparser.Error, UnicodeDecodeError): -+ except (configparser.Error, UnicodeDecodeError): - raise botocore.exceptions.ConfigParseError( - path=_unicode_path(path)) - else: diff --git a/awscli/botocore/crt/auth.py b/awscli/botocore/crt/auth.py -index 534a7f8..5046b35 100644 +index 534a7f8d..5046b35b 100644 --- a/awscli/botocore/crt/auth.py +++ b/awscli/botocore/crt/auth.py @@ -55,10 +55,7 @@ class CrtSigV4Auth(BaseSigner): @@ -145,94 +66,8 @@ index 534a7f8..5046b35 100644 # Use existing 'X-Amz-Content-SHA256' header if able existing_sha256 = self._get_existing_sha256(request) -diff --git a/awscli/botocore/docs/bcdoc/docstringparser.py b/awscli/botocore/docs/bcdoc/docstringparser.py -index 868bd5d..3eaf662 100644 ---- a/awscli/botocore/docs/bcdoc/docstringparser.py -+++ b/awscli/botocore/docs/bcdoc/docstringparser.py -@@ -11,9 +11,10 @@ - # ANY KIND, either express or implied. See the License for the specific - # language governing permissions and limitations under the License. - from botocore.compat import six -+from html import parser as html_parser - - --class DocStringParser(six.moves.html_parser.HTMLParser): -+class DocStringParser(html_parser.HTMLParser): - """ - A simple HTML parser. Focused on converting the subset of HTML - that appears in the documentation strings of the JSON models into -@@ -23,20 +24,20 @@ class DocStringParser(six.moves.html_parser.HTMLParser): - def __init__(self, doc): - self.tree = None - self.doc = doc -- six.moves.html_parser.HTMLParser.__init__(self) -+ html_parser.HTMLParser.__init__(self) - - def reset(self): -- six.moves.html_parser.HTMLParser.reset(self) -+ html_parser.HTMLParser.reset(self) - self.tree = HTMLTree(self.doc) - - def feed(self, data): - # HTMLParser is an old style class, so the super() method will not work. -- six.moves.html_parser.HTMLParser.feed(self, data) -+ html_parser.HTMLParser.feed(self, data) - self.tree.write() - self.tree = HTMLTree(self.doc) - - def close(self): -- six.moves.html_parser.HTMLParser.close(self) -+ html_parser.HTMLParser.close(self) - # Write if there is anything remaining. - self.tree.write() - self.tree = HTMLTree(self.doc) -diff --git a/awscli/botocore/httpsession.py b/awscli/botocore/httpsession.py -index 29b2103..d51dfdd 100644 ---- a/awscli/botocore/httpsession.py -+++ b/awscli/botocore/httpsession.py -@@ -59,7 +59,7 @@ from botocore.exceptions import ( - ReadTimeoutError, - SSLError, - ) --from botocore.vendored.six.moves.urllib_parse import unquote -+from urllib.parse import unquote - - filter_ssl_warnings() - logger = logging.getLogger(__name__) -diff --git a/awscli/botocore/parsers.py b/awscli/botocore/parsers.py -index ffca974..367c867 100644 ---- a/awscli/botocore/parsers.py -+++ b/awscli/botocore/parsers.py -@@ -119,7 +119,8 @@ import json - import logging - import re - --from botocore.compat import ETree, XMLParseError, six -+from botocore.compat import ETree, XMLParseError -+from http import client as http_client - from botocore.eventstream import EventStream, NoInitialResponseError - from botocore.utils import ( - is_json_value_header, -@@ -300,7 +301,7 @@ class ResponseParser(object): - "service, unable to populate error code and message.") - return { - 'Error': {'Code': str(response['status_code']), -- 'Message': six.moves.http_client.responses.get( -+ 'Message': http_client.responses.get( - response['status_code'], '')}, - 'ResponseMetadata': {}, - } -@@ -1035,7 +1036,7 @@ class RestXMLParser(BaseRestParser, BaseXMLResponseParser): - return { - 'Error': { - 'Code': str(response['status_code']), -- 'Message': six.moves.http_client.responses.get( -+ 'Message': http_client.responses.get( - response['status_code'], ''), - }, - 'ResponseMetadata': { diff --git a/awscli/botocore/signers.py b/awscli/botocore/signers.py -index 57df023..7ff87e4 100644 +index 604f6553..6c55277e 100644 --- a/awscli/botocore/signers.py +++ b/awscli/botocore/signers.py @@ -549,7 +549,7 @@ class S3PostPresigner(object): @@ -245,19 +80,10 @@ index 57df023..7ff87e4 100644 policy['expiration'] = expire_date.strftime(botocore.auth.ISO8601) diff --git a/awscli/botocore/utils.py b/awscli/botocore/utils.py -index a408d9d..f4d7ece 100644 +index 89bcc2aa..8d3688c5 100644 --- a/awscli/botocore/utils.py +++ b/awscli/botocore/utils.py -@@ -72,7 +72,7 @@ from botocore.exceptions import ( - UnsupportedS3ControlArnError, - UnsupportedS3ControlConfigurationError, - ) --from botocore.vendored.six.moves.urllib.request import getproxies, proxy_bypass -+from urllib.request import getproxies, proxy_bypass - from dateutil.tz import tzutc - from urllib3.exceptions import LocationParseError - -@@ -583,13 +583,13 @@ class InstanceMetadataFetcher(IMDSFetcher): +@@ -582,13 +582,13 @@ class InstanceMetadataFetcher(IMDSFetcher): return try: expiration = datetime.datetime.strptime( @@ -274,10 +100,10 @@ index a408d9d..f4d7ece 100644 extension_time = expiration - refresh_offset if current_time >= extension_time: diff --git a/awscli/compat.py b/awscli/compat.py -index 4ea633b..1031356 100644 +index b6ae8981..a41c4c6b 100644 --- a/awscli/compat.py +++ b/awscli/compat.py -@@ -25,6 +25,8 @@ from functools import partial +@@ -29,6 +29,8 @@ from functools import partial import urllib.parse as urlparse from urllib.error import URLError @@ -286,22 +112,8 @@ index 4ea633b..1031356 100644 from botocore.compat import six from botocore.compat import OrderedDict -@@ -33,11 +35,10 @@ from botocore.compat import OrderedDict - # This may get large. - advance_iterator = six.advance_iterator - PY3 = six.PY3 --queue = six.moves.queue --shlex_quote = six.moves.shlex_quote -+shlex_quote = shlex.quote - StringIO = six.StringIO - BytesIO = six.BytesIO --urlopen = six.moves.urllib.request.urlopen -+urlopen = urllib.request.urlopen - binary_type = six.binary_type - - # Most, but not all, python installations will have zlib. This is required to diff --git a/awscli/customizations/cloudformation/deployer.py b/awscli/customizations/cloudformation/deployer.py -index 3733c55..8236d33 100644 +index 3733c55e..8236d33c 100644 --- a/awscli/customizations/cloudformation/deployer.py +++ b/awscli/customizations/cloudformation/deployer.py @@ -20,7 +20,7 @@ import collections @@ -323,7 +135,7 @@ index 3733c55..8236d33 100644 # Each changeset will get a unique name based on time diff --git a/awscli/customizations/cloudtrail/validation.py b/awscli/customizations/cloudtrail/validation.py -index 78e2540..ad13507 100644 +index 78e25408..ad135077 100644 --- a/awscli/customizations/cloudtrail/validation.py +++ b/awscli/customizations/cloudtrail/validation.py @@ -19,7 +19,7 @@ import re @@ -354,7 +166,7 @@ index 78e2540..ad13507 100644 raise ParamValidationError( 'Invalid time range specified: start-time must ' diff --git a/awscli/customizations/codecommit.py b/awscli/customizations/codecommit.py -index 6b30e83..7859fb8 100644 +index 6b30e834..7859fb89 100644 --- a/awscli/customizations/codecommit.py +++ b/awscli/customizations/codecommit.py @@ -150,7 +150,7 @@ class CodeCommitGetCommand(BasicCommand): @@ -367,7 +179,7 @@ index 6b30e83..7859fb8 100644 split = urlsplit(request.url) # we don't want to include the port number in the signature diff --git a/awscli/customizations/codedeploy/push.py b/awscli/customizations/codedeploy/push.py -index 4c08664..6d97c8c 100644 +index 4e0fbcff..9f71f7c2 100644 --- a/awscli/customizations/codedeploy/push.py +++ b/awscli/customizations/codedeploy/push.py @@ -16,7 +16,7 @@ import sys @@ -379,7 +191,7 @@ index 4c08664..6d97c8c 100644 from botocore.exceptions import ClientError -@@ -133,7 +133,7 @@ class Push(BasicCommand): +@@ -132,7 +132,7 @@ class Push(BasicCommand): if not parsed_args.description: parsed_args.description = ( 'Uploaded by AWS CLI {0} UTC'.format( @@ -388,21 +200,8 @@ index 4c08664..6d97c8c 100644 ) ) -diff --git a/awscli/customizations/configure/__init__.py b/awscli/customizations/configure/__init__.py -index ab06305..55f11a9 100644 ---- a/awscli/customizations/configure/__init__.py -+++ b/awscli/customizations/configure/__init__.py -@@ -11,7 +11,7 @@ - # ANY KIND, either express or implied. See the License for the specific - # language governing permissions and limitations under the License. - import string --from botocore.vendored.six.moves import shlex_quote -+from shlex import quote as shlex_quote - - NOT_SET = '' - PREDEFINED_SECTION_NAMES = ('plugins') diff --git a/awscli/customizations/datapipeline/__init__.py b/awscli/customizations/datapipeline/__init__.py -index c47ca94..0c12c39 100644 +index c47ca94f..0c12c394 100644 --- a/awscli/customizations/datapipeline/__init__.py +++ b/awscli/customizations/datapipeline/__init__.py @@ -12,7 +12,7 @@ @@ -424,10 +223,10 @@ index c47ca94..0c12c39 100644 def build_query(self, parsed_args): diff --git a/awscli/customizations/ec2/bundleinstance.py b/awscli/customizations/ec2/bundleinstance.py -index 96d9ece..ad4dca0 100644 +index cc6802d6..56c1efa6 100644 --- a/awscli/customizations/ec2/bundleinstance.py +++ b/awscli/customizations/ec2/bundleinstance.py -@@ -120,7 +120,7 @@ def _generate_policy(params): +@@ -118,7 +118,7 @@ def _generate_policy(params): # Called if there is no policy supplied by the user. # Creates a policy that provides access for 24 hours. delta = datetime.timedelta(hours=24) @@ -437,7 +236,7 @@ index 96d9ece..ad4dca0 100644 policy = POLICY.format(expires=expires_iso, bucket=params['Bucket'], diff --git a/awscli/customizations/eks/get_token.py b/awscli/customizations/eks/get_token.py -index c85b86d..9812be4 100644 +index c85b86dd..9812be4f 100644 --- a/awscli/customizations/eks/get_token.py +++ b/awscli/customizations/eks/get_token.py @@ -16,7 +16,7 @@ import json @@ -459,7 +258,7 @@ index c85b86d..9812be4 100644 ) return token_expiration.strftime('%Y-%m-%dT%H:%M:%SZ') diff --git a/awscli/customizations/logs/tail.py b/awscli/customizations/logs/tail.py -index cb31510..623e027 100644 +index cb315100..623e0272 100644 --- a/awscli/customizations/logs/tail.py +++ b/awscli/customizations/logs/tail.py @@ -11,7 +11,8 @@ @@ -482,7 +281,7 @@ index cb31510..623e027 100644 def to_epoch_millis(self, timestamp): re_match = self._RELATIVE_TIMESTAMP_REGEX.match(timestamp) diff --git a/awscli/customizations/opsworks.py b/awscli/customizations/opsworks.py -index a2a0c1e..ff73132 100644 +index e91d4789..9f848c64 100644 --- a/awscli/customizations/opsworks.py +++ b/awscli/customizations/opsworks.py @@ -507,7 +507,7 @@ class OpsWorksRegister(BasicCommand): @@ -495,11 +294,11 @@ index a2a0c1e..ff73132 100644 "DateLessThan": { "aws:CurrentTime": diff --git a/tests/functional/botocore/test_credentials.py b/tests/functional/botocore/test_credentials.py -index 843be90..0349eb4 100644 +index 18bd248d..8af69de4 100644 --- a/tests/functional/botocore/test_credentials.py +++ b/tests/functional/botocore/test_credentials.py -@@ -19,7 +19,7 @@ import time - import mock +@@ -18,7 +18,7 @@ import math + import time import tempfile import shutil -from datetime import datetime, timedelta @@ -507,7 +306,7 @@ index 843be90..0349eb4 100644 import sys import pytest -@@ -47,8 +47,8 @@ from botocore.stub import Stubber +@@ -46,8 +46,8 @@ from botocore.stub import Stubber from botocore.tokens import SSOTokenProvider from botocore.utils import datetime2timestamp @@ -519,10 +318,10 @@ index 843be90..0349eb4 100644 class TestCredentialRefreshRaces(unittest.TestCase): diff --git a/tests/functional/botocore/test_ec2.py b/tests/functional/botocore/test_ec2.py -index 795094e..3ff22c4 100644 +index a5aec4aa..475134cc 100644 --- a/tests/functional/botocore/test_ec2.py +++ b/tests/functional/botocore/test_ec2.py -@@ -86,13 +86,13 @@ class TestCopySnapshotCustomization(BaseSessionTest): +@@ -85,13 +85,13 @@ class TestCopySnapshotCustomization(BaseSessionTest): '%s\n' '\n' ) @@ -539,19 +338,19 @@ index 795094e..3ff22c4 100644 def tearDown(self): super(TestCopySnapshotCustomization, self).tearDown() diff --git a/tests/functional/botocore/test_lex.py b/tests/functional/botocore/test_lex.py -index 7e7f619..dbdf329 100644 +index 659296fd..614691e8 100644 --- a/tests/functional/botocore/test_lex.py +++ b/tests/functional/botocore/test_lex.py -@@ -11,7 +11,7 @@ +@@ -10,7 +10,7 @@ + # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. - import mock -from datetime import datetime +from datetime import datetime, timezone - from tests import BaseSessionTest, ClientHTTPStubber + from tests import mock, BaseSessionTest, ClientHTTPStubber -@@ -32,10 +32,10 @@ class TestLex(BaseSessionTest): +@@ -31,10 +31,10 @@ class TestLex(BaseSessionTest): 'inputStream': b'' } @@ -565,7 +364,7 @@ index 7e7f619..dbdf329 100644 with self.http_stubber: self.client.post_content(**params) diff --git a/tests/functional/botocore/test_s3express.py b/tests/functional/botocore/test_s3express.py -index 390721e..ebb89b0 100644 +index 390721ee..ebb89b0b 100644 --- a/tests/functional/botocore/test_s3express.py +++ b/tests/functional/botocore/test_s3express.py @@ -108,7 +108,6 @@ class TestS3ExpressAuth: @@ -626,7 +425,7 @@ index 390721e..ebb89b0 100644 with ClientHTTPStubber(default_s3_client) as stubber: diff --git a/tests/functional/botocore/test_sts.py b/tests/functional/botocore/test_sts.py -index cdc212a..a279881 100644 +index beb48030..e6978795 100644 --- a/tests/functional/botocore/test_sts.py +++ b/tests/functional/botocore/test_sts.py @@ -10,7 +10,7 @@ @@ -637,8 +436,8 @@ index cdc212a..a279881 100644 +from datetime import datetime, timezone import re - import mock -@@ -38,9 +38,9 @@ class TestSTSPresignedUrl(BaseSessionTest): + from tests import BaseSessionTest +@@ -36,9 +36,9 @@ class TestSTSPresignedUrl(BaseSessionTest): self.stubber.activate() def test_presigned_url_contains_no_content_type(self): @@ -651,10 +450,10 @@ index cdc212a..a279881 100644 # There should be no 'content-type' in x-amz-signedheaders diff --git a/tests/functional/ec2/test_bundle_instance.py b/tests/functional/ec2/test_bundle_instance.py -index 5bc3204..67015f0 100644 +index 1c485d88..d5037fe0 100644 --- a/tests/functional/ec2/test_bundle_instance.py +++ b/tests/functional/ec2/test_bundle_instance.py -@@ -34,7 +34,7 @@ class TestBundleInstance(BaseAWSCommandParamsTest): +@@ -31,7 +31,7 @@ class TestBundleInstance(BaseAWSCommandParamsTest): def setUp(self): super(TestBundleInstance, self).setUp() @@ -663,7 +462,7 @@ index 5bc3204..67015f0 100644 # returns the same datetime object. This is because this value # is embedded into the policy file that is generated and we # don't what the policy or its signature to change each time -@@ -44,7 +44,7 @@ class TestBundleInstance(BaseAWSCommandParamsTest): +@@ -41,7 +41,7 @@ class TestBundleInstance(BaseAWSCommandParamsTest): mock.Mock(wraps=datetime.datetime) ) mocked_datetime = self.datetime_patcher.start() @@ -673,7 +472,7 @@ index 5bc3204..67015f0 100644 def tearDown(self): super(TestBundleInstance, self).tearDown() diff --git a/tests/functional/ec2instanceconnect/test_opentunnel.py b/tests/functional/ec2instanceconnect/test_opentunnel.py -index 83f824d..ddefc47 100644 +index 83f824d2..ddefc47f 100644 --- a/tests/functional/ec2instanceconnect/test_opentunnel.py +++ b/tests/functional/ec2instanceconnect/test_opentunnel.py @@ -310,10 +310,10 @@ def request_params_for_describe_eice(): @@ -699,7 +498,7 @@ index 83f824d..ddefc47 100644 cli_runner.env["AWS_USE_FIPS_ENDPOINT"] = "false" cmdline = [ diff --git a/tests/functional/eks/test_get_token.py b/tests/functional/eks/test_get_token.py -index 89801f9..cdf51f7 100644 +index 89801f9b..cdf51f7b 100644 --- a/tests/functional/eks/test_get_token.py +++ b/tests/functional/eks/test_get_token.py @@ -11,7 +11,7 @@ @@ -748,7 +547,7 @@ index 89801f9..cdf51f7 100644 cmd += ' --output table' stdout, _, _ = self.run_cmd(cmd) diff --git a/tests/functional/logs/test_tail.py b/tests/functional/logs/test_tail.py -index 6049a7f..5707da9 100644 +index 6049a7f8..5707da93 100644 --- a/tests/functional/logs/test_tail.py +++ b/tests/functional/logs/test_tail.py @@ -152,7 +152,7 @@ class TestTailCommand(BaseAWSCommandParamsTest): @@ -770,10 +569,10 @@ index 6049a7f..5707da9 100644 with mock.patch('awscli.customizations.logs.tail.datetime', new=datetime_mock): diff --git a/tests/functional/rds/test_generate_db_auth_token.py b/tests/functional/rds/test_generate_db_auth_token.py -index 795b939..4562b92 100644 +index 79634ed0..1008ba39 100644 --- a/tests/functional/rds/test_generate_db_auth_token.py +++ b/tests/functional/rds/test_generate_db_auth_token.py -@@ -53,7 +53,7 @@ class TestGenerateDBAuthToken(BaseAWSCommandParamsTest): +@@ -51,7 +51,7 @@ class TestGenerateDBAuthToken(BaseAWSCommandParamsTest): clock = datetime.datetime(2016, 11, 7, 17, 39, 33, tzinfo=tzutc()) with mock.patch('datetime.datetime') as dt: @@ -783,7 +582,7 @@ index 795b939..4562b92 100644 expected = ( diff --git a/tests/functional/s3/test_presign_command.py b/tests/functional/s3/test_presign_command.py -index 2db338a..03741d1 100644 +index 2db338a0..03741d19 100644 --- a/tests/functional/s3/test_presign_command.py +++ b/tests/functional/s3/test_presign_command.py @@ -18,13 +18,13 @@ from awscli.testutils import BaseAWSCommandParamsTest, mock, temporary_file @@ -811,22 +610,8 @@ index 2db338a..03741d1 100644 stdout = self.assert_params_for_cmd(cmdline, None)[0].strip() return stdout -diff --git a/tests/integration/botocore/test_client_http.py b/tests/integration/botocore/test_client_http.py -index d6b0902..4e66fdf 100644 ---- a/tests/integration/botocore/test_client_http.py -+++ b/tests/integration/botocore/test_client_http.py -@@ -8,7 +8,8 @@ from contextlib import contextmanager - - import botocore.session - from botocore.config import Config --from botocore.vendored.six.moves import BaseHTTPServer, socketserver -+from http import server as BaseHTTPServer -+import socketserver - from botocore.exceptions import ( - ConnectTimeoutError, ReadTimeoutError, EndpointConnectionError, - ConnectionClosedError, ClientError, ProxyConnectionError diff --git a/tests/integration/customizations/test_codecommit.py b/tests/integration/customizations/test_codecommit.py -index 751e051..fc4d2c1 100644 +index 7ffbed65..25c78faf 100644 --- a/tests/integration/customizations/test_codecommit.py +++ b/tests/integration/customizations/test_codecommit.py @@ -14,7 +14,7 @@ @@ -836,7 +621,7 @@ index 751e051..fc4d2c1 100644 -from datetime import datetime +from datetime import datetime, timezone - from six import StringIO + from awscli.compat import StringIO from botocore.session import Session @@ -59,7 +59,7 @@ class TestCodeCommitCredentialHelper(unittest.TestCase): @mock.patch('sys.stdout', new_callable=StringIOWithFileNo) @@ -866,10 +651,10 @@ index 751e051..fc4d2c1 100644 entry_point = AWSCLIEntryPoint(driver) rc = entry_point.main('codecommit credential-helper get'.split()) diff --git a/tests/unit/botocore/auth/test_signers.py b/tests/unit/botocore/auth/test_signers.py -index 73d3b12..25ca21f 100644 +index 19d559ac..e7db8d8b 100644 --- a/tests/unit/botocore/auth/test_signers.py +++ b/tests/unit/botocore/auth/test_signers.py -@@ -28,10 +28,10 @@ from botocore.awsrequest import AWSRequest +@@ -27,10 +27,10 @@ from botocore.awsrequest import AWSRequest class BaseTestWithFixedDate(unittest.TestCase): def setUp(self): @@ -882,7 +667,7 @@ index 73d3b12..25ca21f 100644 self.datetime_mock.strptime.return_value = self.fixed_date def tearDown(self): -@@ -358,9 +358,9 @@ class TestSigV4(unittest.TestCase): +@@ -357,9 +357,9 @@ class TestSigV4(unittest.TestCase): with mock.patch.object( botocore.auth.datetime, 'datetime', mock.Mock(wraps=datetime.datetime)) as mock_datetime: @@ -894,7 +679,7 @@ index 73d3b12..25ca21f 100644 # Go through the add_auth process once. This will attach # a timestamp to the request at the beginning of auth. auth.add_auth(request) -@@ -368,8 +368,8 @@ class TestSigV4(unittest.TestCase): +@@ -367,8 +367,8 @@ class TestSigV4(unittest.TestCase): # Ensure the date is in the Authorization header self.assertIn('20140101', request.headers['Authorization']) # Now suppose the utc time becomes the next day all of a sudden @@ -905,7 +690,7 @@ index 73d3b12..25ca21f 100644 # Smaller methods like the canonical request and string_to_sign # should have the timestamp attached to the request in their # body and not what the time is now mocked as. This is to ensure -@@ -535,8 +535,8 @@ class TestSigV4Presign(BasePresignTest): +@@ -534,8 +534,8 @@ class TestSigV4Presign(BasePresignTest): mock.Mock(wraps=datetime.datetime) ) mocked_datetime = self.datetime_patcher.start() @@ -916,7 +701,7 @@ index 73d3b12..25ca21f 100644 def tearDown(self): self.datetime_patcher.stop() -@@ -730,8 +730,8 @@ class TestS3SigV4Post(BaseS3PresignPostTest): +@@ -729,8 +729,8 @@ class TestS3SigV4Post(BaseS3PresignPostTest): mock.Mock(wraps=datetime.datetime) ) mocked_datetime = self.datetime_patcher.start() @@ -928,10 +713,10 @@ index 73d3b12..25ca21f 100644 def tearDown(self): self.datetime_patcher.stop() diff --git a/tests/unit/botocore/test_client.py b/tests/unit/botocore/test_client.py -index f28b959..1b3d56b 100644 +index 464cc354..2455fc5f 100644 --- a/tests/unit/botocore/test_client.py +++ b/tests/unit/botocore/test_client.py -@@ -960,7 +960,7 @@ class TestAutoGeneratedClient(unittest.TestCase): +@@ -969,7 +969,7 @@ class TestAutoGeneratedClient(unittest.TestCase): lines = [ (' Creates an iterator that will paginate through responses ' 'from :py:meth:`MyService.Client.test_operation`.'), @@ -940,7 +725,7 @@ index f28b959..1b3d56b 100644 ' ::', ' response_iterator = paginator.paginate(', " Foo='string',", -@@ -976,17 +976,17 @@ class TestAutoGeneratedClient(unittest.TestCase): +@@ -985,17 +985,17 @@ class TestAutoGeneratedClient(unittest.TestCase): ' :type Bar: string', ' :param Bar: Documents Bar', ' :type PaginationConfig: dict', @@ -963,7 +748,7 @@ index f28b959..1b3d56b 100644 'the ``NextToken`` from a previous response.'), ' :returns: None', diff --git a/tests/unit/botocore/test_credentials.py b/tests/unit/botocore/test_credentials.py -index c59f278..c50f593 100644 +index b9931216..7fdcf4ba 100644 --- a/tests/unit/botocore/test_credentials.py +++ b/tests/unit/botocore/test_credentials.py @@ -11,7 +11,7 @@ @@ -973,9 +758,9 @@ index c59f278..c50f593 100644 -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone import subprocess - import mock import os -@@ -111,7 +111,7 @@ class TestRefreshableCredentials(TestCredentials): + import tempfile +@@ -110,7 +110,7 @@ class TestRefreshableCredentials(TestCredentials): def test_refresh_needed(self): # The expiry time was set for 30 minutes ago, so if we @@ -984,7 +769,7 @@ index c59f278..c50f593 100644 # a refresh. self.mock_time.return_value = datetime.now(tzlocal()) self.assertTrue(self.creds.refresh_needed()) -@@ -291,8 +291,8 @@ class TestAssumeRoleCredentialFetcher(BaseEnvVar): +@@ -290,8 +290,8 @@ class TestAssumeRoleCredentialFetcher(BaseEnvVar): self.assertEqual(response, expected_response) def test_retrieves_from_cache(self): @@ -995,7 +780,7 @@ index c59f278..c50f593 100644 cache_key = ( '793d6e2f27667ab2da104824407e486bfec24a47' ) -@@ -703,8 +703,8 @@ class TestAssumeRoleWithWebIdentityCredentialFetcher(BaseEnvVar): +@@ -702,8 +702,8 @@ class TestAssumeRoleWithWebIdentityCredentialFetcher(BaseEnvVar): self.assertEqual(response, expected_response) def test_retrieves_from_cache(self): @@ -1006,7 +791,7 @@ index c59f278..c50f593 100644 cache_key = ( '793d6e2f27667ab2da104824407e486bfec24a47' ) -@@ -823,8 +823,8 @@ class TestAssumeRoleWithWebIdentityCredentialProvider(unittest.TestCase): +@@ -822,8 +822,8 @@ class TestAssumeRoleWithWebIdentityCredentialProvider(unittest.TestCase): mock_loader_cls.assert_called_with('/some/path/token.jwt') def test_assume_role_retrieves_from_cache(self): @@ -1017,7 +802,7 @@ index c59f278..c50f593 100644 cache_key = ( 'c29461feeacfbed43017d20612606ff76abc073d' -@@ -1961,8 +1961,8 @@ class TestAssumeRoleCredentialProvider(unittest.TestCase): +@@ -1960,8 +1960,8 @@ class TestAssumeRoleCredentialProvider(unittest.TestCase): self.assertEqual(expiry_time, '2016-11-06T01:30:00UTC') def test_assume_role_retrieves_from_cache(self): @@ -1028,7 +813,7 @@ index c59f278..c50f593 100644 self.fake_config['profiles']['development']['role_arn'] = 'myrole' cache_key = ( -@@ -1989,8 +1989,8 @@ class TestAssumeRoleCredentialProvider(unittest.TestCase): +@@ -1988,8 +1988,8 @@ class TestAssumeRoleCredentialProvider(unittest.TestCase): self.assertEqual(creds.token, 'baz-cached') def test_chain_prefers_cache(self): @@ -1040,10 +825,10 @@ index c59f278..c50f593 100644 # The profile we will be using has a cache entry, but the profile it # is sourcing from does not. This should result in the cached diff --git a/tests/unit/botocore/test_signers.py b/tests/unit/botocore/test_signers.py -index e06e0c1..507e2ea 100644 +index a38d1b59..b0840d54 100644 --- a/tests/unit/botocore/test_signers.py +++ b/tests/unit/botocore/test_signers.py -@@ -609,9 +609,9 @@ class TestS3PostPresigner(BaseSignerTest): +@@ -607,9 +607,9 @@ class TestS3PostPresigner(BaseSignerTest): self.datetime_patch = mock.patch('botocore.signers.datetime') self.datetime_mock = self.datetime_patch.start() @@ -1055,7 +840,7 @@ index e06e0c1..507e2ea 100644 self.datetime_mock.timedelta.return_value = self.fixed_delta def tearDown(self): -@@ -979,7 +979,7 @@ class TestGenerateDBAuthToken(BaseSignerTest): +@@ -1004,7 +1004,7 @@ class TestGenerateDBAuthToken(BaseSignerTest): clock = datetime.datetime(2016, 11, 7, 17, 39, 33, tzinfo=tzutc()) with mock.patch('datetime.datetime') as dt: @@ -1065,7 +850,7 @@ index e06e0c1..507e2ea 100644 self.client, hostname, port, username) diff --git a/tests/unit/botocore/test_utils.py b/tests/unit/botocore/test_utils.py -index 1f27e25..8116070 100644 +index b4699c6c..2d128bf1 100644 --- a/tests/unit/botocore/test_utils.py +++ b/tests/unit/botocore/test_utils.py @@ -98,7 +98,7 @@ from botocore.stub import Stubber @@ -1077,7 +862,7 @@ index 1f27e25..8116070 100644 DT_FORMAT = "%Y-%m-%dT%H:%M:%SZ" -@@ -1004,7 +1004,7 @@ class TestSwitchToChunkedEncodingForNonSeekableObjects(unittest.TestCase): +@@ -1052,7 +1052,7 @@ class TestSwitchToChunkedEncodingForNonSeekableObjects(unittest.TestCase): def test_switch_to_chunked_encodeing_for_stream_like_object(self): request = AWSRequest( method='POST', headers={}, @@ -1086,7 +871,7 @@ index 1f27e25..8116070 100644 url='https://foo.amazonaws.com/bucket/key.txt' ) prepared_request = request.prepare() -@@ -2819,7 +2819,7 @@ class TestInstanceMetadataFetcher(unittest.TestCase): +@@ -2867,7 +2867,7 @@ class TestInstanceMetadataFetcher(unittest.TestCase): self, dt=None, offset=None, offset_func=operator.add ): if dt is None: @@ -1096,10 +881,10 @@ index 1f27e25..8116070 100644 dt = offset_func(dt, offset) diff --git a/tests/unit/botocore/test_waiters.py b/tests/unit/botocore/test_waiters.py -index 27fbe1f..b79e173 100644 +index c5876f5b..ea393ae9 100644 --- a/tests/unit/botocore/test_waiters.py +++ b/tests/unit/botocore/test_waiters.py -@@ -648,7 +648,7 @@ class TestCreateWaiter(unittest.TestCase): +@@ -646,7 +646,7 @@ class TestCreateWaiter(unittest.TestCase): (' Polls :py:meth:`MyService.Client.foo` every 1 ' 'seconds until a successful state is reached. An error ' 'is returned after 1 failed checks.'), @@ -1109,10 +894,10 @@ index 27fbe1f..b79e173 100644 ' waiter.wait(', " bar='string'", diff --git a/tests/unit/customizations/eks/test_get_token.py b/tests/unit/customizations/eks/test_get_token.py -index 17c07b0..0d1b7fc 100644 +index 9575aa0d..2664e1fe 100644 --- a/tests/unit/customizations/eks/test_get_token.py +++ b/tests/unit/customizations/eks/test_get_token.py -@@ -49,6 +49,6 @@ class TestGetTokenCommand(BaseTokenTest): +@@ -46,6 +46,6 @@ class TestGetTokenCommand(BaseTokenTest): cmd = GetTokenCommand(self._session) timestamp = cmd.get_expiration_time() try: @@ -1121,10 +906,10 @@ index 17c07b0..0d1b7fc 100644 except ValueError: raise ValueError("Incorrect data format, should be %Y-%m-%dT%H:%M:%SZ") diff --git a/tests/unit/customizations/test_opsworks.py b/tests/unit/customizations/test_opsworks.py -index 1471ba9..f6816b9 100644 +index d5a6eba3..bad37a90 100644 --- a/tests/unit/customizations/test_opsworks.py +++ b/tests/unit/customizations/test_opsworks.py -@@ -34,8 +34,8 @@ class TestOpsWorksBase(unittest.TestCase): +@@ -33,8 +33,8 @@ class TestOpsWorksBase(unittest.TestCase): mock.Mock(wraps=datetime.datetime) ) mocked_datetime = self.datetime_patcher.start() @@ -1136,10 +921,10 @@ index 1471ba9..f6816b9 100644 def tearDown(self): self.datetime_patcher.stop() diff --git a/tests/utils/botocore/__init__.py b/tests/utils/botocore/__init__.py -index 9b8f205..abedac8 100644 +index 106736f3..c76288b5 100644 --- a/tests/utils/botocore/__init__.py +++ b/tests/utils/botocore/__init__.py -@@ -560,12 +560,12 @@ class FreezeTime(contextlib.ContextDecorator): +@@ -559,12 +559,12 @@ class FreezeTime(contextlib.ContextDecorator): :param module: reference to imported module to patch (e.g. botocore.auth.datetime) :type date: datetime.datetime @@ -1154,7 +939,7 @@ index 9b8f205..abedac8 100644 self.date = date self.datetime_patcher = mock.patch.object( module, 'datetime', -@@ -574,7 +574,7 @@ class FreezeTime(contextlib.ContextDecorator): +@@ -573,7 +573,7 @@ class FreezeTime(contextlib.ContextDecorator): def __enter__(self, *args, **kwargs): mock = self.datetime_patcher.start() diff --git a/sources b/sources index 2c9a34b..2161271 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (aws-cli-2.17.6.tar.gz) = b3eef3f34124be3f3bf8b30d3df83c46bdce6359f287ac3bd74bc8734be48767e5f32363ec95e86104e46932c8cee99dda4df454404b74d172a0c7d441b629a5 +SHA512 (aws-cli-2.17.13.tar.gz) = a2928d908808c3c983f32d5f5d9230465dd68e0a4def3b0f5fa30eca3f36e8172460ad130b6af5b35700ebfc45a68addc9aea14565613bb0ed955f52a556e816