Merge remote-tracking branch 'fedora/f41' into c10s

This commit is contained in:
Major Hayden 2024-08-22 08:16:56 -05:00
commit 90fc8884e9
No known key found for this signature in database
6 changed files with 134 additions and 300 deletions

9
.gitignore vendored
View File

@ -29,3 +29,12 @@
/aws-cli-2.15.2.tar.gz /aws-cli-2.15.2.tar.gz
/aws-cli-2.15.10.tar.gz /aws-cli-2.15.10.tar.gz
/aws-cli-2.15.31.tar.gz /aws-cli-2.15.31.tar.gz
/aws-cli-2.15.30.tar.gz
/aws-cli-2.15.31.tar.gz
/aws-cli-2.16.8.tar.gz
/aws-cli-2.17.0.tar.gz
/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
/aws-cli-2.17.18.tar.gz

View File

@ -0,0 +1,38 @@
From 4b5762bb17f172d9f9e058df8908651856ff4a69 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 13 Jun 2024 10:33:42 -0700
Subject: [PATCH] Bump the ceiling for botocore memory leak tests to 15 MiB
See https://github.com/boto/botocore/issues/3205 for the
background on this. In rebuilding awscli2 for Python 3.13 in
Fedora Rawhide, we found that two of these tests fail because
they now top out around 11MiB of memory usage, rather than
around 1.6MiB. We don't understand why this is yet, but it's not
a memory *leak*, so bumping the ceiling seems appropriate. I'm
sending this upstream so I have a reference for the downstream
package and to raise awareness of the issue, but the correct fix
may be something else.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
tests/functional/botocore/leak/test_resource_leaks.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/functional/botocore/leak/test_resource_leaks.py b/tests/functional/botocore/leak/test_resource_leaks.py
index df1c4fe7f..73027725f 100644
--- a/tests/functional/botocore/leak/test_resource_leaks.py
+++ b/tests/functional/botocore/leak/test_resource_leaks.py
@@ -22,8 +22,8 @@ class TestDoesNotLeakMemory(BaseClientDriverTest):
# a substantial amount of time to the total test run time.
INJECT_DUMMY_CREDS = True
# We're making up numbers here, but let's say arbitrarily
- # that the memory can't increase by more than 10MB.
- MAX_GROWTH_BYTES = 10 * 1024 * 1024
+ # that the memory can't increase by more than 15MB.
+ MAX_GROWTH_BYTES = 15 * 1024 * 1024
def test_create_single_client_memory_constant(self):
self.cmd('create_client', 's3')
--
2.45.2

View File

@ -1,3 +1,3 @@
This repository is maintained by packit. This repository is maintained by packit.
https://packit.dev/ https://packit.dev/
The file was generated using packit 0.88.0.post1.dev4+gc070191b. The file was generated using packit 0.99.0.post1.dev18+g4850a935.

View File

@ -1,7 +1,7 @@
%global pkgname aws-cli %global pkgname aws-cli
Name: awscli2 Name: awscli2
Version: 2.15.31 Version: 2.17.18
Release: %autorelease Release: %autorelease
Summary: Universal Command Line Environment for AWS, version 2 Summary: Universal Command Line Environment for AWS, version 2
@ -19,6 +19,10 @@ Patch0: ruamel-yaml-0.17.32.patch
Patch1: python312.patch Patch1: python312.patch
# fix incorrect assertions in TestKubeconfigLoader # fix incorrect assertions in TestKubeconfigLoader
Patch2: assertions.patch Patch2: assertions.patch
# Bump ceiling for botocore memory leak tests
# https://github.com/aws/aws-cli/pull/8744
# https://github.com/boto/botocore/issues/3205
Patch3: 0001-Bump-the-ceiling-for-botocore-memory-leak-tests-to-1.patch
BuildArch: noarch BuildArch: noarch
@ -106,9 +110,7 @@ sed -i '/self.driver.start(env=env)/i \ \ \ \ \ \ \ \ env["PYTHONPATH"] = "%{bui
tests/utils/botocore/__init__.py tests/utils/botocore/__init__.py
export TESTS_REMOVE_REPO_ROOT_FROM_PATH=1 TZ=UTC export TESTS_REMOVE_REPO_ROOT_FROM_PATH=1 TZ=UTC
%if 0%{?rhel}
export OPENSSL_ENABLE_SHA1_SIGNATURES=yes export OPENSSL_ENABLE_SHA1_SIGNATURES=yes
%endif
%pytest --verbose %{!?rhel:--numprocesses=auto --dist=loadfile --maxprocesses=4} tests/unit tests/functional %pytest --verbose %{!?rhel:--numprocesses=auto --dist=loadfile --maxprocesses=4} tests/unit tests/functional

View File

@ -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 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 --- a/awscli/botocore/auth.py
+++ b/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): def add_auth(self, request):
if self.credentials is None: if self.credentials is None:
raise NoCredentialsError() raise NoCredentialsError()
@ -52,7 +11,7 @@ index e8c83ad..e50be2a 100644
request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP) request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
# This could be a retry. Make sure the previous # This could be a retry. Make sure the previous
# authorization header is removed first. # authorization header is removed first.
@@ -440,7 +440,7 @@ class SigV4Auth(BaseSigner): @@ -439,7 +439,7 @@ class SigV4Auth(BaseSigner):
if 'Date' in request.headers: if 'Date' in request.headers:
del request.headers['Date'] del request.headers['Date']
datetime_timestamp = datetime.datetime.strptime( datetime_timestamp = datetime.datetime.strptime(
@ -61,7 +20,7 @@ index e8c83ad..e50be2a 100644
request.headers['Date'] = formatdate( request.headers['Date'] = formatdate(
int(calendar.timegm(datetime_timestamp.timetuple()))) int(calendar.timegm(datetime_timestamp.timetuple())))
if 'X-Amz-Date' in request.headers: 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 REQUIRES_IDENTITY_CACHE = True
def add_auth(self, request): def add_auth(self, request):
@ -70,7 +29,7 @@ index e8c83ad..e50be2a 100644
request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP) request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
fields = {} 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 http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html
""" """
def add_auth(self, request): def add_auth(self, request):
@ -79,46 +38,8 @@ index e8c83ad..e50be2a 100644
request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP) request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
fields = {} 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 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 --- a/awscli/botocore/crt/auth.py
+++ b/awscli/botocore/crt/auth.py +++ b/awscli/botocore/crt/auth.py
@@ -55,10 +55,7 @@ class CrtSigV4Auth(BaseSigner): @@ -55,10 +55,7 @@ class CrtSigV4Auth(BaseSigner):
@ -145,94 +66,8 @@ index 534a7f8..5046b35 100644
# Use existing 'X-Amz-Content-SHA256' header if able # Use existing 'X-Amz-Content-SHA256' header if able
existing_sha256 = self._get_existing_sha256(request) 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 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 --- a/awscli/botocore/signers.py
+++ b/awscli/botocore/signers.py +++ b/awscli/botocore/signers.py
@@ -549,7 +549,7 @@ class S3PostPresigner(object): @@ -549,7 +549,7 @@ class S3PostPresigner(object):
@ -245,19 +80,10 @@ index 57df023..7ff87e4 100644
policy['expiration'] = expire_date.strftime(botocore.auth.ISO8601) policy['expiration'] = expire_date.strftime(botocore.auth.ISO8601)
diff --git a/awscli/botocore/utils.py b/awscli/botocore/utils.py 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 --- a/awscli/botocore/utils.py
+++ b/awscli/botocore/utils.py +++ b/awscli/botocore/utils.py
@@ -72,7 +72,7 @@ from botocore.exceptions import ( @@ -582,13 +582,13 @@ class InstanceMetadataFetcher(IMDSFetcher):
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):
return return
try: try:
expiration = datetime.datetime.strptime( expiration = datetime.datetime.strptime(
@ -274,10 +100,10 @@ index a408d9d..f4d7ece 100644
extension_time = expiration - refresh_offset extension_time = expiration - refresh_offset
if current_time >= extension_time: if current_time >= extension_time:
diff --git a/awscli/compat.py b/awscli/compat.py diff --git a/awscli/compat.py b/awscli/compat.py
index 4ea633b..1031356 100644 index b6ae8981..a41c4c6b 100644
--- a/awscli/compat.py --- a/awscli/compat.py
+++ b/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 import urllib.parse as urlparse
from urllib.error import URLError from urllib.error import URLError
@ -286,22 +112,8 @@ index 4ea633b..1031356 100644
from botocore.compat import six from botocore.compat import six
from botocore.compat import OrderedDict 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 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 --- a/awscli/customizations/cloudformation/deployer.py
+++ b/awscli/customizations/cloudformation/deployer.py +++ b/awscli/customizations/cloudformation/deployer.py
@@ -20,7 +20,7 @@ import collections @@ -20,7 +20,7 @@ import collections
@ -323,7 +135,7 @@ index 3733c55..8236d33 100644
# Each changeset will get a unique name based on time # Each changeset will get a unique name based on time
diff --git a/awscli/customizations/cloudtrail/validation.py b/awscli/customizations/cloudtrail/validation.py 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 --- a/awscli/customizations/cloudtrail/validation.py
+++ b/awscli/customizations/cloudtrail/validation.py +++ b/awscli/customizations/cloudtrail/validation.py
@@ -19,7 +19,7 @@ import re @@ -19,7 +19,7 @@ import re
@ -354,7 +166,7 @@ index 78e2540..ad13507 100644
raise ParamValidationError( raise ParamValidationError(
'Invalid time range specified: start-time must ' 'Invalid time range specified: start-time must '
diff --git a/awscli/customizations/codecommit.py b/awscli/customizations/codecommit.py 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 --- a/awscli/customizations/codecommit.py
+++ b/awscli/customizations/codecommit.py +++ b/awscli/customizations/codecommit.py
@@ -150,7 +150,7 @@ class CodeCommitGetCommand(BasicCommand): @@ -150,7 +150,7 @@ class CodeCommitGetCommand(BasicCommand):
@ -367,7 +179,7 @@ index 6b30e83..7859fb8 100644
split = urlsplit(request.url) split = urlsplit(request.url)
# we don't want to include the port number in the signature # 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 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 --- a/awscli/customizations/codedeploy/push.py
+++ b/awscli/customizations/codedeploy/push.py +++ b/awscli/customizations/codedeploy/push.py
@@ -16,7 +16,7 @@ import sys @@ -16,7 +16,7 @@ import sys
@ -379,7 +191,7 @@ index 4c08664..6d97c8c 100644
from botocore.exceptions import ClientError from botocore.exceptions import ClientError
@@ -133,7 +133,7 @@ class Push(BasicCommand): @@ -132,7 +132,7 @@ class Push(BasicCommand):
if not parsed_args.description: if not parsed_args.description:
parsed_args.description = ( parsed_args.description = (
'Uploaded by AWS CLI {0} UTC'.format( '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 = '<not set>'
PREDEFINED_SECTION_NAMES = ('plugins')
diff --git a/awscli/customizations/datapipeline/__init__.py b/awscli/customizations/datapipeline/__init__.py 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 --- a/awscli/customizations/datapipeline/__init__.py
+++ b/awscli/customizations/datapipeline/__init__.py +++ b/awscli/customizations/datapipeline/__init__.py
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
@ -424,10 +223,10 @@ index c47ca94..0c12c39 100644
def build_query(self, parsed_args): def build_query(self, parsed_args):
diff --git a/awscli/customizations/ec2/bundleinstance.py b/awscli/customizations/ec2/bundleinstance.py 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 --- a/awscli/customizations/ec2/bundleinstance.py
+++ b/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. # Called if there is no policy supplied by the user.
# Creates a policy that provides access for 24 hours. # Creates a policy that provides access for 24 hours.
delta = datetime.timedelta(hours=24) delta = datetime.timedelta(hours=24)
@ -437,7 +236,7 @@ index 96d9ece..ad4dca0 100644
policy = POLICY.format(expires=expires_iso, policy = POLICY.format(expires=expires_iso,
bucket=params['Bucket'], bucket=params['Bucket'],
diff --git a/awscli/customizations/eks/get_token.py b/awscli/customizations/eks/get_token.py 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 --- a/awscli/customizations/eks/get_token.py
+++ b/awscli/customizations/eks/get_token.py +++ b/awscli/customizations/eks/get_token.py
@@ -16,7 +16,7 @@ import json @@ -16,7 +16,7 @@ import json
@ -459,7 +258,7 @@ index c85b86d..9812be4 100644
) )
return token_expiration.strftime('%Y-%m-%dT%H:%M:%SZ') return token_expiration.strftime('%Y-%m-%dT%H:%M:%SZ')
diff --git a/awscli/customizations/logs/tail.py b/awscli/customizations/logs/tail.py 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 --- a/awscli/customizations/logs/tail.py
+++ b/awscli/customizations/logs/tail.py +++ b/awscli/customizations/logs/tail.py
@@ -11,7 +11,8 @@ @@ -11,7 +11,8 @@
@ -482,7 +281,7 @@ index cb31510..623e027 100644
def to_epoch_millis(self, timestamp): def to_epoch_millis(self, timestamp):
re_match = self._RELATIVE_TIMESTAMP_REGEX.match(timestamp) re_match = self._RELATIVE_TIMESTAMP_REGEX.match(timestamp)
diff --git a/awscli/customizations/opsworks.py b/awscli/customizations/opsworks.py 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 --- a/awscli/customizations/opsworks.py
+++ b/awscli/customizations/opsworks.py +++ b/awscli/customizations/opsworks.py
@@ -507,7 +507,7 @@ class OpsWorksRegister(BasicCommand): @@ -507,7 +507,7 @@ class OpsWorksRegister(BasicCommand):
@ -495,11 +294,11 @@ index a2a0c1e..ff73132 100644
"DateLessThan": { "DateLessThan": {
"aws:CurrentTime": "aws:CurrentTime":
diff --git a/tests/functional/botocore/test_credentials.py b/tests/functional/botocore/test_credentials.py 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 --- a/tests/functional/botocore/test_credentials.py
+++ b/tests/functional/botocore/test_credentials.py +++ b/tests/functional/botocore/test_credentials.py
@@ -19,7 +19,7 @@ import time @@ -18,7 +18,7 @@ import math
import mock import time
import tempfile import tempfile
import shutil import shutil
-from datetime import datetime, timedelta -from datetime import datetime, timedelta
@ -507,7 +306,7 @@ index 843be90..0349eb4 100644
import sys import sys
import pytest 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.tokens import SSOTokenProvider
from botocore.utils import datetime2timestamp from botocore.utils import datetime2timestamp
@ -519,10 +318,10 @@ index 843be90..0349eb4 100644
class TestCredentialRefreshRaces(unittest.TestCase): class TestCredentialRefreshRaces(unittest.TestCase):
diff --git a/tests/functional/botocore/test_ec2.py b/tests/functional/botocore/test_ec2.py 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 --- a/tests/functional/botocore/test_ec2.py
+++ b/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):
'<snapshotId>%s</snapshotId>\n' '<snapshotId>%s</snapshotId>\n'
'</CopySnapshotResponse>\n' '</CopySnapshotResponse>\n'
) )
@ -539,19 +338,19 @@ index 795094e..3ff22c4 100644
def tearDown(self): def tearDown(self):
super(TestCopySnapshotCustomization, self).tearDown() super(TestCopySnapshotCustomization, self).tearDown()
diff --git a/tests/functional/botocore/test_lex.py b/tests/functional/botocore/test_lex.py 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 --- a/tests/functional/botocore/test_lex.py
+++ b/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 # ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License. # language governing permissions and limitations under the License.
import mock
-from datetime import datetime -from datetime import datetime
+from datetime import datetime, timezone +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'' 'inputStream': b''
} }
@ -565,7 +364,7 @@ index 7e7f619..dbdf329 100644
with self.http_stubber: with self.http_stubber:
self.client.post_content(**params) self.client.post_content(**params)
diff --git a/tests/functional/botocore/test_s3express.py b/tests/functional/botocore/test_s3express.py 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 --- a/tests/functional/botocore/test_s3express.py
+++ b/tests/functional/botocore/test_s3express.py +++ b/tests/functional/botocore/test_s3express.py
@@ -108,7 +108,6 @@ class TestS3ExpressAuth: @@ -108,7 +108,6 @@ class TestS3ExpressAuth:
@ -626,7 +425,7 @@ index 390721e..ebb89b0 100644
with ClientHTTPStubber(default_s3_client) as stubber: with ClientHTTPStubber(default_s3_client) as stubber:
diff --git a/tests/functional/botocore/test_sts.py b/tests/functional/botocore/test_sts.py 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 --- a/tests/functional/botocore/test_sts.py
+++ b/tests/functional/botocore/test_sts.py +++ b/tests/functional/botocore/test_sts.py
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
@ -637,8 +436,8 @@ index cdc212a..a279881 100644
+from datetime import datetime, timezone +from datetime import datetime, timezone
import re import re
import mock from tests import BaseSessionTest
@@ -38,9 +38,9 @@ class TestSTSPresignedUrl(BaseSessionTest): @@ -36,9 +36,9 @@ class TestSTSPresignedUrl(BaseSessionTest):
self.stubber.activate() self.stubber.activate()
def test_presigned_url_contains_no_content_type(self): 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 # 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 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 --- a/tests/functional/ec2/test_bundle_instance.py
+++ b/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): def setUp(self):
super(TestBundleInstance, self).setUp() super(TestBundleInstance, self).setUp()
@ -663,7 +462,7 @@ index 5bc3204..67015f0 100644
# returns the same datetime object. This is because this value # returns the same datetime object. This is because this value
# is embedded into the policy file that is generated and we # is embedded into the policy file that is generated and we
# don't what the policy or its signature to change each time # 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) mock.Mock(wraps=datetime.datetime)
) )
mocked_datetime = self.datetime_patcher.start() mocked_datetime = self.datetime_patcher.start()
@ -673,7 +472,7 @@ index 5bc3204..67015f0 100644
def tearDown(self): def tearDown(self):
super(TestBundleInstance, self).tearDown() super(TestBundleInstance, self).tearDown()
diff --git a/tests/functional/ec2instanceconnect/test_opentunnel.py b/tests/functional/ec2instanceconnect/test_opentunnel.py 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 --- a/tests/functional/ec2instanceconnect/test_opentunnel.py
+++ b/tests/functional/ec2instanceconnect/test_opentunnel.py +++ b/tests/functional/ec2instanceconnect/test_opentunnel.py
@@ -310,10 +310,10 @@ def request_params_for_describe_eice(): @@ -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" cli_runner.env["AWS_USE_FIPS_ENDPOINT"] = "false"
cmdline = [ cmdline = [
diff --git a/tests/functional/eks/test_get_token.py b/tests/functional/eks/test_get_token.py 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 --- a/tests/functional/eks/test_get_token.py
+++ b/tests/functional/eks/test_get_token.py +++ b/tests/functional/eks/test_get_token.py
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
@ -748,7 +547,7 @@ index 89801f9..cdf51f7 100644
cmd += ' --output table' cmd += ' --output table'
stdout, _, _ = self.run_cmd(cmd) stdout, _, _ = self.run_cmd(cmd)
diff --git a/tests/functional/logs/test_tail.py b/tests/functional/logs/test_tail.py 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 --- a/tests/functional/logs/test_tail.py
+++ b/tests/functional/logs/test_tail.py +++ b/tests/functional/logs/test_tail.py
@@ -152,7 +152,7 @@ class TestTailCommand(BaseAWSCommandParamsTest): @@ -152,7 +152,7 @@ class TestTailCommand(BaseAWSCommandParamsTest):
@ -770,10 +569,10 @@ index 6049a7f..5707da9 100644
with mock.patch('awscli.customizations.logs.tail.datetime', with mock.patch('awscli.customizations.logs.tail.datetime',
new=datetime_mock): 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 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 --- a/tests/functional/rds/test_generate_db_auth_token.py
+++ b/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()) clock = datetime.datetime(2016, 11, 7, 17, 39, 33, tzinfo=tzutc())
with mock.patch('datetime.datetime') as dt: with mock.patch('datetime.datetime') as dt:
@ -783,7 +582,7 @@ index 795b939..4562b92 100644
expected = ( expected = (
diff --git a/tests/functional/s3/test_presign_command.py b/tests/functional/s3/test_presign_command.py 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 --- a/tests/functional/s3/test_presign_command.py
+++ b/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 @@ -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() stdout = self.assert_params_for_cmd(cmdline, None)[0].strip()
return stdout 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 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 --- a/tests/integration/customizations/test_codecommit.py
+++ b/tests/integration/customizations/test_codecommit.py +++ b/tests/integration/customizations/test_codecommit.py
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
@ -836,7 +621,7 @@ index 751e051..fc4d2c1 100644
-from datetime import datetime -from datetime import datetime
+from datetime import datetime, timezone +from datetime import datetime, timezone
from six import StringIO from awscli.compat import StringIO
from botocore.session import Session from botocore.session import Session
@@ -59,7 +59,7 @@ class TestCodeCommitCredentialHelper(unittest.TestCase): @@ -59,7 +59,7 @@ class TestCodeCommitCredentialHelper(unittest.TestCase):
@mock.patch('sys.stdout', new_callable=StringIOWithFileNo) @mock.patch('sys.stdout', new_callable=StringIOWithFileNo)
@ -866,10 +651,10 @@ index 751e051..fc4d2c1 100644
entry_point = AWSCLIEntryPoint(driver) entry_point = AWSCLIEntryPoint(driver)
rc = entry_point.main('codecommit credential-helper get'.split()) 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 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 --- a/tests/unit/botocore/auth/test_signers.py
+++ b/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): class BaseTestWithFixedDate(unittest.TestCase):
def setUp(self): def setUp(self):
@ -882,7 +667,7 @@ index 73d3b12..25ca21f 100644
self.datetime_mock.strptime.return_value = self.fixed_date self.datetime_mock.strptime.return_value = self.fixed_date
def tearDown(self): def tearDown(self):
@@ -358,9 +358,9 @@ class TestSigV4(unittest.TestCase): @@ -357,9 +357,9 @@ class TestSigV4(unittest.TestCase):
with mock.patch.object( with mock.patch.object(
botocore.auth.datetime, 'datetime', botocore.auth.datetime, 'datetime',
mock.Mock(wraps=datetime.datetime)) as mock_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 # Go through the add_auth process once. This will attach
# a timestamp to the request at the beginning of auth. # a timestamp to the request at the beginning of auth.
auth.add_auth(request) 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 # Ensure the date is in the Authorization header
self.assertIn('20140101', request.headers['Authorization']) self.assertIn('20140101', request.headers['Authorization'])
# Now suppose the utc time becomes the next day all of a sudden # 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 # Smaller methods like the canonical request and string_to_sign
# should have the timestamp attached to the request in their # should have the timestamp attached to the request in their
# body and not what the time is now mocked as. This is to ensure # 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) mock.Mock(wraps=datetime.datetime)
) )
mocked_datetime = self.datetime_patcher.start() mocked_datetime = self.datetime_patcher.start()
@ -916,7 +701,7 @@ index 73d3b12..25ca21f 100644
def tearDown(self): def tearDown(self):
self.datetime_patcher.stop() self.datetime_patcher.stop()
@@ -730,8 +730,8 @@ class TestS3SigV4Post(BaseS3PresignPostTest): @@ -729,8 +729,8 @@ class TestS3SigV4Post(BaseS3PresignPostTest):
mock.Mock(wraps=datetime.datetime) mock.Mock(wraps=datetime.datetime)
) )
mocked_datetime = self.datetime_patcher.start() mocked_datetime = self.datetime_patcher.start()
@ -928,10 +713,10 @@ index 73d3b12..25ca21f 100644
def tearDown(self): def tearDown(self):
self.datetime_patcher.stop() self.datetime_patcher.stop()
diff --git a/tests/unit/botocore/test_client.py b/tests/unit/botocore/test_client.py 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 --- a/tests/unit/botocore/test_client.py
+++ b/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 = [ lines = [
(' Creates an iterator that will paginate through responses ' (' Creates an iterator that will paginate through responses '
'from :py:meth:`MyService.Client.test_operation`.'), 'from :py:meth:`MyService.Client.test_operation`.'),
@ -940,7 +725,7 @@ index f28b959..1b3d56b 100644
' ::', ' ::',
' response_iterator = paginator.paginate(', ' response_iterator = paginator.paginate(',
" Foo='string',", " Foo='string',",
@@ -976,17 +976,17 @@ class TestAutoGeneratedClient(unittest.TestCase): @@ -985,17 +985,17 @@ class TestAutoGeneratedClient(unittest.TestCase):
' :type Bar: string', ' :type Bar: string',
' :param Bar: Documents Bar', ' :param Bar: Documents Bar',
' :type PaginationConfig: dict', ' :type PaginationConfig: dict',
@ -963,7 +748,7 @@ index f28b959..1b3d56b 100644
'the ``NextToken`` from a previous response.'), 'the ``NextToken`` from a previous response.'),
' :returns: None', ' :returns: None',
diff --git a/tests/unit/botocore/test_credentials.py b/tests/unit/botocore/test_credentials.py 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 --- a/tests/unit/botocore/test_credentials.py
+++ b/tests/unit/botocore/test_credentials.py +++ b/tests/unit/botocore/test_credentials.py
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
@ -973,9 +758,9 @@ index c59f278..c50f593 100644
-from datetime import datetime, timedelta -from datetime import datetime, timedelta
+from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta, timezone
import subprocess import subprocess
import mock
import os import os
@@ -111,7 +111,7 @@ class TestRefreshableCredentials(TestCredentials): import tempfile
@@ -110,7 +110,7 @@ class TestRefreshableCredentials(TestCredentials):
def test_refresh_needed(self): def test_refresh_needed(self):
# The expiry time was set for 30 minutes ago, so if we # The expiry time was set for 30 minutes ago, so if we
@ -984,7 +769,7 @@ index c59f278..c50f593 100644
# a refresh. # a refresh.
self.mock_time.return_value = datetime.now(tzlocal()) self.mock_time.return_value = datetime.now(tzlocal())
self.assertTrue(self.creds.refresh_needed()) 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) self.assertEqual(response, expected_response)
def test_retrieves_from_cache(self): def test_retrieves_from_cache(self):
@ -995,7 +780,7 @@ index c59f278..c50f593 100644
cache_key = ( cache_key = (
'793d6e2f27667ab2da104824407e486bfec24a47' '793d6e2f27667ab2da104824407e486bfec24a47'
) )
@@ -703,8 +703,8 @@ class TestAssumeRoleWithWebIdentityCredentialFetcher(BaseEnvVar): @@ -702,8 +702,8 @@ class TestAssumeRoleWithWebIdentityCredentialFetcher(BaseEnvVar):
self.assertEqual(response, expected_response) self.assertEqual(response, expected_response)
def test_retrieves_from_cache(self): def test_retrieves_from_cache(self):
@ -1006,7 +791,7 @@ index c59f278..c50f593 100644
cache_key = ( cache_key = (
'793d6e2f27667ab2da104824407e486bfec24a47' '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') mock_loader_cls.assert_called_with('/some/path/token.jwt')
def test_assume_role_retrieves_from_cache(self): def test_assume_role_retrieves_from_cache(self):
@ -1017,7 +802,7 @@ index c59f278..c50f593 100644
cache_key = ( cache_key = (
'c29461feeacfbed43017d20612606ff76abc073d' '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') self.assertEqual(expiry_time, '2016-11-06T01:30:00UTC')
def test_assume_role_retrieves_from_cache(self): def test_assume_role_retrieves_from_cache(self):
@ -1028,7 +813,7 @@ index c59f278..c50f593 100644
self.fake_config['profiles']['development']['role_arn'] = 'myrole' self.fake_config['profiles']['development']['role_arn'] = 'myrole'
cache_key = ( cache_key = (
@@ -1989,8 +1989,8 @@ class TestAssumeRoleCredentialProvider(unittest.TestCase): @@ -1988,8 +1988,8 @@ class TestAssumeRoleCredentialProvider(unittest.TestCase):
self.assertEqual(creds.token, 'baz-cached') self.assertEqual(creds.token, 'baz-cached')
def test_chain_prefers_cache(self): 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 # 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 # 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 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 --- a/tests/unit/botocore/test_signers.py
+++ b/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_patch = mock.patch('botocore.signers.datetime')
self.datetime_mock = self.datetime_patch.start() self.datetime_mock = self.datetime_patch.start()
@ -1055,7 +840,7 @@ index e06e0c1..507e2ea 100644
self.datetime_mock.timedelta.return_value = self.fixed_delta self.datetime_mock.timedelta.return_value = self.fixed_delta
def tearDown(self): 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()) clock = datetime.datetime(2016, 11, 7, 17, 39, 33, tzinfo=tzutc())
with mock.patch('datetime.datetime') as dt: with mock.patch('datetime.datetime') as dt:
@ -1065,7 +850,7 @@ index e06e0c1..507e2ea 100644
self.client, hostname, port, username) self.client, hostname, port, username)
diff --git a/tests/unit/botocore/test_utils.py b/tests/unit/botocore/test_utils.py 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 --- a/tests/unit/botocore/test_utils.py
+++ b/tests/unit/botocore/test_utils.py +++ b/tests/unit/botocore/test_utils.py
@@ -98,7 +98,7 @@ from botocore.stub import Stubber @@ -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" 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): def test_switch_to_chunked_encodeing_for_stream_like_object(self):
request = AWSRequest( request = AWSRequest(
method='POST', headers={}, method='POST', headers={},
@ -1086,7 +871,7 @@ index 1f27e25..8116070 100644
url='https://foo.amazonaws.com/bucket/key.txt' url='https://foo.amazonaws.com/bucket/key.txt'
) )
prepared_request = request.prepare() 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 self, dt=None, offset=None, offset_func=operator.add
): ):
if dt is None: if dt is None:
@ -1096,10 +881,10 @@ index 1f27e25..8116070 100644
dt = offset_func(dt, offset) dt = offset_func(dt, offset)
diff --git a/tests/unit/botocore/test_waiters.py b/tests/unit/botocore/test_waiters.py 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 --- a/tests/unit/botocore/test_waiters.py
+++ b/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 ' (' Polls :py:meth:`MyService.Client.foo` every 1 '
'seconds until a successful state is reached. An error ' 'seconds until a successful state is reached. An error '
'is returned after 1 failed checks.'), 'is returned after 1 failed checks.'),
@ -1109,10 +894,10 @@ index 27fbe1f..b79e173 100644
' waiter.wait(', ' waiter.wait(',
" bar='string'", " bar='string'",
diff --git a/tests/unit/customizations/eks/test_get_token.py b/tests/unit/customizations/eks/test_get_token.py 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 --- a/tests/unit/customizations/eks/test_get_token.py
+++ b/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) cmd = GetTokenCommand(self._session)
timestamp = cmd.get_expiration_time() timestamp = cmd.get_expiration_time()
try: try:
@ -1121,10 +906,10 @@ index 17c07b0..0d1b7fc 100644
except ValueError: except ValueError:
raise ValueError("Incorrect data format, should be %Y-%m-%dT%H:%M:%SZ") 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 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 --- a/tests/unit/customizations/test_opsworks.py
+++ b/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) mock.Mock(wraps=datetime.datetime)
) )
mocked_datetime = self.datetime_patcher.start() mocked_datetime = self.datetime_patcher.start()
@ -1136,10 +921,10 @@ index 1471ba9..f6816b9 100644
def tearDown(self): def tearDown(self):
self.datetime_patcher.stop() self.datetime_patcher.stop()
diff --git a/tests/utils/botocore/__init__.py b/tests/utils/botocore/__init__.py 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 --- a/tests/utils/botocore/__init__.py
+++ b/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) :param module: reference to imported module to patch (e.g. botocore.auth.datetime)
:type date: datetime.datetime :type date: datetime.datetime
@ -1154,7 +939,7 @@ index 9b8f205..abedac8 100644
self.date = date self.date = date
self.datetime_patcher = mock.patch.object( self.datetime_patcher = mock.patch.object(
module, 'datetime', module, 'datetime',
@@ -574,7 +574,7 @@ class FreezeTime(contextlib.ContextDecorator): @@ -573,7 +573,7 @@ class FreezeTime(contextlib.ContextDecorator):
def __enter__(self, *args, **kwargs): def __enter__(self, *args, **kwargs):
mock = self.datetime_patcher.start() mock = self.datetime_patcher.start()

View File

@ -1 +1 @@
SHA512 (aws-cli-2.15.31.tar.gz) = 3600409edf0218254f8dfc4346cd0e1df3af2d4047fca2e021f655a48344ec3f058a48258d830b150ed92ede98e723d164a200fcbd519fd8a1002bc6d0c0294d SHA512 (aws-cli-2.17.18.tar.gz) = 33fd535deefdd214c1b92f4941a83225969b33230dcfa70fea2114be06a92161a97e641fe8bb43bb0f57249ab17593a197b678a3d1dd7d68d244fd8dd64fbb3c