mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-14 00:56:25 +02:00
community/aws-cli: enable, upgrade to 2.15.57
This commit is contained in:
parent
0d3e842205
commit
87cdbf05e6
@ -1,15 +1,14 @@
|
||||
# Contributor: Valery Kartel <valery.kartel@gmail.com>
|
||||
# Maintainer:
|
||||
pkgname=aws-cli
|
||||
pkgver=2.15.30
|
||||
pkgver=2.15.57
|
||||
pkgrel=0
|
||||
pkgdesc="Universal Command Line Interface for Amazon Web Services (v2)"
|
||||
url="https://github.com/aws/aws-cli"
|
||||
# s390x: py3-awscrt doesn't support big-endian
|
||||
# arm*, ppc64le: py3-awscrt
|
||||
# x86: fails check, so most likely not supported on 32-bit anymore
|
||||
# no python 3.12 support: https://github.com/aws/aws-cli/issues/8342
|
||||
#arch="all !x86 !armhf !armv7 !ppc64le !s390x"
|
||||
arch="all !x86 !armhf !armv7 !ppc64le !s390x"
|
||||
license="Apache-2.0"
|
||||
depends="
|
||||
py3-awscrt
|
||||
@ -45,6 +44,14 @@ subpackages="
|
||||
$pkgname-bash-completion:bashcomp
|
||||
"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/aws/aws-cli/archive/$pkgver.tar.gz
|
||||
allow-egg-info.patch
|
||||
aws-cli-v2-ruamel-yaml-v4.patch
|
||||
aws-cli-v2-tz-fix.patch
|
||||
botocore-2551.patch
|
||||
botocore-2922.patch
|
||||
botocore-2924.patch
|
||||
botocore-2967.patch
|
||||
botocore-2990-rebased.patch
|
||||
fix-env.patch
|
||||
tmpfile-index.patch
|
||||
"
|
||||
@ -74,7 +81,7 @@ check() {
|
||||
# each core takes like 2gb, so be a little conservative
|
||||
local cores
|
||||
cores="$(nproc)"
|
||||
cores="$((cores / 2))"
|
||||
cores="$((cores / 3))"
|
||||
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer .dist/*.whl
|
||||
@ -130,7 +137,15 @@ doc() {
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
eedf2027a36122bad94e6090a4511fc9438f509a19d97b57fc79ec9b4f7df88003f04584fc9ecbf499b7d37430bf00d2eba333f1354dea8c69805b7bdffa8406 aws-cli-2.15.30.tar.gz
|
||||
cd35ed602d9a06a58fb16ded5f1f559c9d1841fc96fdad8402e625aa56b2ca246a5b631f0915ec091591ac63cce296842f0a87b26c77c9b83a81bcbb2e1d0e15 aws-cli-2.15.57.tar.gz
|
||||
ed05961344a0acb8c7b8aaf913f8e782c90ece23aa89006112e9b1c2ea6d0cfa21efc6b38ac1f6b604182b09824675fe6ef68f6394c3b10dfa9e75f82c7cd387 aws-cli-v2-ruamel-yaml-v4.patch
|
||||
66c813b52d1fa402d89cd4381237175b3c8f52546e60f4a9703c27281f4a27d579751b90468a84208f94743b3c58e041cf9e9c9f28387ea06897575db8e46946 aws-cli-v2-tz-fix.patch
|
||||
e0647b8690c139617da696318124b74a19b938c56d836f6531a86e031ec9fd9e43798807a3519d78c9abba59aa8b6679623dc75b579ce57ebb4dff55569fa18d botocore-2551.patch
|
||||
0b47b8329863dd71e4aeac18eb1175b47a68e45df0becae738ec3bf72f908cf96f99dffd7714c3835e014b1c100701a6652e1db3d2e415162fcc9c8a098cf201 botocore-2922.patch
|
||||
99d8e7755149033fa86ae246de07f6c320991d111affd9a98618182fa1fdebf466e3be693671bb1dda4d5ac514f001446ff68cf156b98f33dc48c9a541d89c53 botocore-2924.patch
|
||||
506733c13d1034684baf771c872aadbc4bad8037e05f588acde68071b73bd2d8fcf41a21562324210316cbdd1929c44ceca3273f174caf7af6470d8b27518fb1 botocore-2967.patch
|
||||
79ff2138a7b9dbddedd059f0e1e3ef8f92708a93e2c65293de33298de65e5a3360e6e8af05c18b4763f1a7221198f4aa1ca2afd901fd748ad545ffea5fe8471a botocore-2990-rebased.patch
|
||||
850b4ca6e09f96cba8968d2d7a3b60bd5206d7c4c257ba927b576336a992796b51263506cdd100314604ec7ad493a26326bf059ccd7f96772ad9326aa68ee41e fix-env.patch
|
||||
ecfad03dafbdc8cdc73f41a432f0acb53ce3636f58a8b3d0cfcef06617f24ee8588e0648ee7290148bcfc8a3007d00b865899d473a6653d970a55be63760551f tmpfile-index.patch
|
||||
3780a1b8af4d0098315beacd9a6a7cb4ebac08d4c1194dc55b5db6f0a28c46e45da85f0b94da2e005c5327686f8c4a2b99ee45b3cf847b3bbf5d82c80b433f50 allow-egg-info.patch
|
||||
"
|
||||
|
||||
13
community/aws-cli/allow-egg-info.patch
Normal file
13
community/aws-cli/allow-egg-info.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/tests/dependencies/test_closure.py b/tests/dependencies/test_closure.py
|
||||
index 6231438cd..b5f2b0515 100644
|
||||
--- a/tests/dependencies/test_closure.py
|
||||
+++ b/tests/dependencies/test_closure.py
|
||||
@@ -83,7 +83,7 @@ class Package:
|
||||
snake_case_name = name.replace("-", "_")
|
||||
for sitepackages in site.getsitepackages():
|
||||
for filename in os.listdir(sitepackages):
|
||||
- if fnmatch.fnmatch(filename, f"{snake_case_name}-*.dist-info"):
|
||||
+ if fnmatch.fnmatch(filename, f"{snake_case_name}-*.dist-info") or fnmatch.fnmatch(filename, f"{snake_case_name}-*.egg-info"):
|
||||
return importlib.metadata.Distribution.at(
|
||||
os.path.join(sitepackages, filename)
|
||||
)
|
||||
111
community/aws-cli/aws-cli-v2-ruamel-yaml-v4.patch
Normal file
111
community/aws-cli/aws-cli-v2-ruamel-yaml-v4.patch
Normal file
@ -0,0 +1,111 @@
|
||||
From 0331e399231b6cdb54b7b3bdd01a793647053cdd Mon Sep 17 00:00:00 2001
|
||||
From: Chih-Hsuan Yen <645432-yan12125@users.noreply.gitlab.com>
|
||||
Date: Sat, 29 Jul 2023 17:32:06 +0800
|
||||
Subject: [PATCH] Support newer ruamel-yaml
|
||||
|
||||
* ruamel-yaml 0.17.22 comes with a style change that affects test results.
|
||||
From https://sourceforge.net/p/ruamel-yaml/code/ci/0.17.22/tree/CHANGES
|
||||
|
||||
> plain scalars: put single words longer than width on a line of their own, instead of after the previous line
|
||||
|
||||
* ruamel-yaml 0.17.29 introduces an issue with add_constructor and
|
||||
DEFAULT_MAPPING_TAG, and the issue is fixed with 0.17.36 [1], hence the
|
||||
new lower bound.
|
||||
|
||||
[1] https://sourceforge.net/p/ruamel-yaml/tickets/482/
|
||||
---
|
||||
pyproject.toml | 4 ++--
|
||||
tests/functional/eks/testdata/output_combined | 6 ++++--
|
||||
.../eks/testdata/output_combined_changed_ordering | 6 ++++--
|
||||
tests/functional/eks/testdata/output_single | 3 ++-
|
||||
tests/functional/eks/testdata/valid_old_api_version_updated | 3 ++-
|
||||
5 files changed, 14 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/pyproject.toml b/pyproject.toml
|
||||
index fef9a3068d5..1e436a88149 100644
|
||||
--- a/pyproject.toml
|
||||
+++ b/pyproject.toml
|
||||
@@ -31,7 +31,7 @@ dependencies = [
|
||||
"colorama>=0.2.5,<0.4.7",
|
||||
"docutils>=0.10,<0.20",
|
||||
"cryptography>=3.3.2,<40.0.2",
|
||||
- "ruamel.yaml>=0.15.0,<=0.17.21",
|
||||
+ "ruamel.yaml>=0.17.36,<=0.17.39",
|
||||
# ruamel.yaml only requires ruamel.yaml.clib for Python versions
|
||||
# less than or equal to Python 3.10. In order to ensure we have
|
||||
# a consistent dependency closure across all Python versions,
|
||||
@@ -98,4 +98,4 @@ filterwarnings = [
|
||||
]
|
||||
|
||||
[tool.black]
|
||||
-line-length = 80
|
||||
\ No newline at end of file
|
||||
+line-length = 80
|
||||
diff --git a/tests/functional/eks/testdata/output_combined b/tests/functional/eks/testdata/output_combined
|
||||
index 8e9ce098f72..8e30727da6e 100644
|
||||
--- a/tests/functional/eks/testdata/output_combined
|
||||
+++ b/tests/functional/eks/testdata/output_combined
|
||||
@@ -1,11 +1,13 @@
|
||||
apiVersion: v1
|
||||
clusters:
|
||||
- cluster:
|
||||
- certificate-authority-data: DATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATA=
|
||||
+ certificate-authority-data:
|
||||
+ DATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATA=
|
||||
server: https://existingEndpoint.eks.amazonaws.com
|
||||
name: arn:aws:eks:us-west-2:111222333444:cluster/Existing
|
||||
- cluster:
|
||||
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
+ certificate-authority-data:
|
||||
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
server: https://endpoint.amazonaws.com
|
||||
name: arn:aws:eks:region:111222333444:cluster/ExampleCluster
|
||||
contexts:
|
||||
diff --git a/tests/functional/eks/testdata/output_combined_changed_ordering b/tests/functional/eks/testdata/output_combined_changed_ordering
|
||||
index 79da5622cb0..d016d87d72b 100644
|
||||
--- a/tests/functional/eks/testdata/output_combined_changed_ordering
|
||||
+++ b/tests/functional/eks/testdata/output_combined_changed_ordering
|
||||
@@ -29,11 +29,13 @@ users:
|
||||
command: aws
|
||||
clusters:
|
||||
- cluster:
|
||||
- certificate-authority-data: DATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATA=
|
||||
+ certificate-authority-data:
|
||||
+ DATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATADATA=
|
||||
server: https://existingEndpoint.eks.amazonaws.com
|
||||
name: arn:aws:eks:us-west-2:111222333444:cluster/Existing
|
||||
- cluster:
|
||||
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
+ certificate-authority-data:
|
||||
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
server: https://endpoint.amazonaws.com
|
||||
name: arn:aws:eks:region:111222333444:cluster/ExampleCluster
|
||||
kind: Config
|
||||
diff --git a/tests/functional/eks/testdata/output_single b/tests/functional/eks/testdata/output_single
|
||||
index fb1e0b9b1ef..cdf5fb6523e 100644
|
||||
--- a/tests/functional/eks/testdata/output_single
|
||||
+++ b/tests/functional/eks/testdata/output_single
|
||||
@@ -1,7 +1,8 @@
|
||||
apiVersion: v1
|
||||
clusters:
|
||||
- cluster:
|
||||
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
+ certificate-authority-data:
|
||||
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
server: https://endpoint.amazonaws.com
|
||||
name: arn:aws:eks:region:111222333444:cluster/ExampleCluster
|
||||
contexts:
|
||||
diff --git a/tests/functional/eks/testdata/valid_old_api_version_updated b/tests/functional/eks/testdata/valid_old_api_version_updated
|
||||
index fb1e0b9b1ef..cdf5fb6523e 100644
|
||||
--- a/tests/functional/eks/testdata/valid_old_api_version_updated
|
||||
+++ b/tests/functional/eks/testdata/valid_old_api_version_updated
|
||||
@@ -1,7 +1,8 @@
|
||||
apiVersion: v1
|
||||
clusters:
|
||||
- cluster:
|
||||
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
+ certificate-authority-data:
|
||||
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpWR1Z6ZEdsdVp5QkVZWFJoRFFwVVpYTjBhVzVuSUVSaGRHRU5DbFJsYzNScGJtY2dSR0YwWVEwS2EzVmlaWEp1WlhSbGN6QWVGdzBLVkdWemRHbHVaeUJFWVhSaERRcFVaWE4wYVc1bklFUmhkR0ZWQkFNVERRcHJkV0psY201bGRHVnpNQUVpTUEwS1ZHVnpkR2x1WnlCRVlYUmhEUXBVWlhOMGFXNW5JRVJoZEdFTkNsUmxjM1JwYm1jZ1JHRjBZY3UvR1FnbmFTcDNZaHBDTWhGVVpYTjBhVzVuSUVSaGRHRXl3clZqeEpWNjNwNFVHRmpZdHdGR1drUldJVkV1VkdWemRHbHVaeUJFWVhSaGJzT0MxSVJiTDhPd0lpMVhiWGg2VkdWemRHbHVaeUJFWVhSaFpXVndTTk9VVUZKNmN5QWJaaFpnWVNkTUV3MEtGMVJsYzNScGJtY2dSR0YwWVFZRFZSMFBBUUVFQkFNQ0FsUmxjM1JwYm1jZ1JHRjBZUUV3RFFvR0NTcElEUXBVWlhOMGFXNW5JRVJoZEdGcEgxc1pPRTNMa3lrMU9DWUNHUloyTEZjM3paOCtHell3WEZSbGMzUnBibWNnUkdGMFlYMUR5NjFNMVlGV1AxWVRIMVJsYzNScGJtY2dSR0YwWVd0aE5oMVphM2dWUDBGaGNSWjdKaW9oZVc4N1JsUmxjM1JwYm1jZ1JHRjBZUVpIVHd4NE9IdzZmZz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
||||
server: https://endpoint.amazonaws.com
|
||||
name: arn:aws:eks:region:111222333444:cluster/ExampleCluster
|
||||
contexts:
|
||||
42
community/aws-cli/aws-cli-v2-tz-fix.patch
Normal file
42
community/aws-cli/aws-cli-v2-tz-fix.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From 95aa5ccc7bfaeafc0373e8472c8459030ac18920 Mon Sep 17 00:00:00 2001
|
||||
From: Avimitin <dev@avimit.in>
|
||||
Date: Tue, 21 Mar 2023 12:36:48 +0800
|
||||
Subject: [PATCH] Force timezone info to fix possible test failure
|
||||
|
||||
This commit will affects the test
|
||||
`test_credentials.py::SSOSessionTest::test_token_chosen_from_provider`.
|
||||
This test will throw a `RuntimeError: Credentials were refreshed, but
|
||||
the refreshed credentials are still expired` because the timestamp call
|
||||
uses system local time, which is different from UTC time. And this will
|
||||
cause an unexpected failure if the test is not run in a system configured
|
||||
with `TZ=UTC`.
|
||||
|
||||
Signed-off-by: Avimitin <dev@avimit.in>
|
||||
---
|
||||
tests/functional/botocore/test_credentials.py | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/tests/functional/botocore/test_credentials.py b/tests/functional/botocore/test_credentials.py
|
||||
index 843be90e484..9da9bf2b443 100644
|
||||
--- a/tests/functional/botocore/test_credentials.py
|
||||
+++ b/tests/functional/botocore/test_credentials.py
|
||||
@@ -19,7 +19,7 @@
|
||||
import mock
|
||||
import tempfile
|
||||
import shutil
|
||||
-from datetime import datetime, timedelta
|
||||
+from datetime import datetime, timedelta, timezone
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
@@ -47,8 +47,8 @@
|
||||
from botocore.tokens import SSOTokenProvider
|
||||
from botocore.utils import datetime2timestamp
|
||||
|
||||
-TIME_IN_ONE_HOUR = datetime.utcnow() + timedelta(hours=1)
|
||||
-TIME_IN_SIX_MONTHS = datetime.utcnow() + timedelta(hours=4320)
|
||||
+TIME_IN_ONE_HOUR = datetime.now(tz=timezone.utc) + timedelta(hours=1)
|
||||
+TIME_IN_SIX_MONTHS = datetime.now(tz=timezone.utc) + timedelta(hours=4320)
|
||||
|
||||
|
||||
class TestCredentialRefreshRaces(unittest.TestCase):
|
||||
367
community/aws-cli/botocore-2551.patch
Normal file
367
community/aws-cli/botocore-2551.patch
Normal file
@ -0,0 +1,367 @@
|
||||
From c6c63e7b7e248966503d8ff4ac2dfe9e43f1862d Mon Sep 17 00:00:00 2001
|
||||
From: Nate Prewitt <nate.prewitt@gmail.com>
|
||||
Date: Mon, 1 Nov 2021 11:32:35 -0700
|
||||
Subject: [PATCH] Update six from 1.10.0 to 1.16.0
|
||||
|
||||
---
|
||||
.changes/next-release/feature-six-62143.json | 5 +
|
||||
awscli/botocore/vendored/six.py | 186 ++++++++++++++++---
|
||||
2 files changed, 163 insertions(+), 28 deletions(-)
|
||||
create mode 100644 .changes/next-release/feature-six-62143.json
|
||||
|
||||
diff --git a/.changes/next-release/feature-six-62143.json b/.changes/next-release/feature-six-62143.json
|
||||
new file mode 100644
|
||||
index 0000000000..c4393201ee
|
||||
--- /dev/null
|
||||
+++ b/.changes/next-release/feature-six-62143.json
|
||||
@@ -0,0 +1,5 @@
|
||||
+{
|
||||
+ "type": "feature",
|
||||
+ "category": "``six``",
|
||||
+ "description": "Updated vendored version of ``six`` from 1.10.0 to 1.16.0"
|
||||
+}
|
||||
diff --git a/awscli/botocore/vendored/six.py b/awscli/botocore/vendored/six.py
|
||||
index 190c0239cd..4e15675d8b 100644
|
||||
--- a/awscli/botocore/vendored/six.py
|
||||
+++ b/awscli/botocore/vendored/six.py
|
||||
@@ -1,6 +1,4 @@
|
||||
-"""Utilities for writing code that runs on Python 2 and 3"""
|
||||
-
|
||||
-# Copyright (c) 2010-2015 Benjamin Peterson
|
||||
+# Copyright (c) 2010-2020 Benjamin Peterson
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,6 +18,8 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
+"""Utilities for writing code that runs on Python 2 and 3"""
|
||||
+
|
||||
from __future__ import absolute_import
|
||||
|
||||
import functools
|
||||
@@ -29,7 +29,7 @@
|
||||
import types
|
||||
|
||||
__author__ = "Benjamin Peterson <benjamin@python.org>"
|
||||
-__version__ = "1.10.0"
|
||||
+__version__ = "1.16.0"
|
||||
|
||||
|
||||
# Useful for very coarse version differentiation.
|
||||
@@ -71,6 +71,11 @@ def __len__(self):
|
||||
MAXSIZE = int((1 << 63) - 1)
|
||||
del X
|
||||
|
||||
+if PY34:
|
||||
+ from importlib.util import spec_from_loader
|
||||
+else:
|
||||
+ spec_from_loader = None
|
||||
+
|
||||
|
||||
def _add_doc(func, doc):
|
||||
"""Add documentation to a function."""
|
||||
@@ -186,6 +191,11 @@ def find_module(self, fullname, path=None):
|
||||
return self
|
||||
return None
|
||||
|
||||
+ def find_spec(self, fullname, path, target=None):
|
||||
+ if fullname in self.known_modules:
|
||||
+ return spec_from_loader(fullname, self)
|
||||
+ return None
|
||||
+
|
||||
def __get_module(self, fullname):
|
||||
try:
|
||||
return self.known_modules[fullname]
|
||||
@@ -223,6 +233,12 @@ def get_code(self, fullname):
|
||||
return None
|
||||
get_source = get_code # same as get_code
|
||||
|
||||
+ def create_module(self, spec):
|
||||
+ return self.load_module(spec.name)
|
||||
+
|
||||
+ def exec_module(self, module):
|
||||
+ pass
|
||||
+
|
||||
_importer = _SixMetaPathImporter(__name__)
|
||||
|
||||
|
||||
@@ -241,6 +257,7 @@ class _MovedItems(_LazyModule):
|
||||
MovedAttribute("map", "itertools", "builtins", "imap", "map"),
|
||||
MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"),
|
||||
MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"),
|
||||
+ MovedAttribute("getoutput", "commands", "subprocess"),
|
||||
MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"),
|
||||
MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"),
|
||||
MovedAttribute("reduce", "__builtin__", "functools"),
|
||||
@@ -254,18 +271,21 @@ class _MovedItems(_LazyModule):
|
||||
MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"),
|
||||
MovedModule("builtins", "__builtin__"),
|
||||
MovedModule("configparser", "ConfigParser"),
|
||||
+ MovedModule("collections_abc", "collections", "collections.abc" if sys.version_info >= (3, 3) else "collections"),
|
||||
MovedModule("copyreg", "copy_reg"),
|
||||
MovedModule("dbm_gnu", "gdbm", "dbm.gnu"),
|
||||
- MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"),
|
||||
+ MovedModule("dbm_ndbm", "dbm", "dbm.ndbm"),
|
||||
+ MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread" if sys.version_info < (3, 9) else "_thread"),
|
||||
MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
|
||||
MovedModule("http_cookies", "Cookie", "http.cookies"),
|
||||
MovedModule("html_entities", "htmlentitydefs", "html.entities"),
|
||||
MovedModule("html_parser", "HTMLParser", "html.parser"),
|
||||
MovedModule("http_client", "httplib", "http.client"),
|
||||
+ MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"),
|
||||
+ MovedModule("email_mime_image", "email.MIMEImage", "email.mime.image"),
|
||||
MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"),
|
||||
MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"),
|
||||
MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"),
|
||||
- MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"),
|
||||
MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
|
||||
MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
|
||||
MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
|
||||
@@ -337,10 +357,12 @@ class Module_six_moves_urllib_parse(_LazyModule):
|
||||
MovedAttribute("quote_plus", "urllib", "urllib.parse"),
|
||||
MovedAttribute("unquote", "urllib", "urllib.parse"),
|
||||
MovedAttribute("unquote_plus", "urllib", "urllib.parse"),
|
||||
+ MovedAttribute("unquote_to_bytes", "urllib", "urllib.parse", "unquote", "unquote_to_bytes"),
|
||||
MovedAttribute("urlencode", "urllib", "urllib.parse"),
|
||||
MovedAttribute("splitquery", "urllib", "urllib.parse"),
|
||||
MovedAttribute("splittag", "urllib", "urllib.parse"),
|
||||
MovedAttribute("splituser", "urllib", "urllib.parse"),
|
||||
+ MovedAttribute("splitvalue", "urllib", "urllib.parse"),
|
||||
MovedAttribute("uses_fragment", "urlparse", "urllib.parse"),
|
||||
MovedAttribute("uses_netloc", "urlparse", "urllib.parse"),
|
||||
MovedAttribute("uses_params", "urlparse", "urllib.parse"),
|
||||
@@ -416,6 +438,8 @@ class Module_six_moves_urllib_request(_LazyModule):
|
||||
MovedAttribute("URLopener", "urllib", "urllib.request"),
|
||||
MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
|
||||
MovedAttribute("proxy_bypass", "urllib", "urllib.request"),
|
||||
+ MovedAttribute("parse_http_list", "urllib2", "urllib.request"),
|
||||
+ MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"),
|
||||
]
|
||||
for attr in _urllib_request_moved_attributes:
|
||||
setattr(Module_six_moves_urllib_request, attr.name, attr)
|
||||
@@ -631,13 +655,16 @@ def u(s):
|
||||
import io
|
||||
StringIO = io.StringIO
|
||||
BytesIO = io.BytesIO
|
||||
+ del io
|
||||
_assertCountEqual = "assertCountEqual"
|
||||
if sys.version_info[1] <= 1:
|
||||
_assertRaisesRegex = "assertRaisesRegexp"
|
||||
_assertRegex = "assertRegexpMatches"
|
||||
+ _assertNotRegex = "assertNotRegexpMatches"
|
||||
else:
|
||||
_assertRaisesRegex = "assertRaisesRegex"
|
||||
_assertRegex = "assertRegex"
|
||||
+ _assertNotRegex = "assertNotRegex"
|
||||
else:
|
||||
def b(s):
|
||||
return s
|
||||
@@ -659,6 +686,7 @@ def indexbytes(buf, i):
|
||||
_assertCountEqual = "assertItemsEqual"
|
||||
_assertRaisesRegex = "assertRaisesRegexp"
|
||||
_assertRegex = "assertRegexpMatches"
|
||||
+ _assertNotRegex = "assertNotRegexpMatches"
|
||||
_add_doc(b, """Byte literal""")
|
||||
_add_doc(u, """Text literal""")
|
||||
|
||||
@@ -675,15 +703,23 @@ def assertRegex(self, *args, **kwargs):
|
||||
return getattr(self, _assertRegex)(*args, **kwargs)
|
||||
|
||||
|
||||
+def assertNotRegex(self, *args, **kwargs):
|
||||
+ return getattr(self, _assertNotRegex)(*args, **kwargs)
|
||||
+
|
||||
+
|
||||
if PY3:
|
||||
exec_ = getattr(moves.builtins, "exec")
|
||||
|
||||
def reraise(tp, value, tb=None):
|
||||
- if value is None:
|
||||
- value = tp()
|
||||
- if value.__traceback__ is not tb:
|
||||
- raise value.with_traceback(tb)
|
||||
- raise value
|
||||
+ try:
|
||||
+ if value is None:
|
||||
+ value = tp()
|
||||
+ if value.__traceback__ is not tb:
|
||||
+ raise value.with_traceback(tb)
|
||||
+ raise value
|
||||
+ finally:
|
||||
+ value = None
|
||||
+ tb = None
|
||||
|
||||
else:
|
||||
def exec_(_code_, _globs_=None, _locs_=None):
|
||||
@@ -699,19 +735,19 @@ def exec_(_code_, _globs_=None, _locs_=None):
|
||||
exec("""exec _code_ in _globs_, _locs_""")
|
||||
|
||||
exec_("""def reraise(tp, value, tb=None):
|
||||
- raise tp, value, tb
|
||||
+ try:
|
||||
+ raise tp, value, tb
|
||||
+ finally:
|
||||
+ tb = None
|
||||
""")
|
||||
|
||||
|
||||
-if sys.version_info[:2] == (3, 2):
|
||||
+if sys.version_info[:2] > (3,):
|
||||
exec_("""def raise_from(value, from_value):
|
||||
- if from_value is None:
|
||||
- raise value
|
||||
- raise value from from_value
|
||||
-""")
|
||||
-elif sys.version_info[:2] > (3, 2):
|
||||
- exec_("""def raise_from(value, from_value):
|
||||
- raise value from from_value
|
||||
+ try:
|
||||
+ raise value from from_value
|
||||
+ finally:
|
||||
+ value = None
|
||||
""")
|
||||
else:
|
||||
def raise_from(value, from_value):
|
||||
@@ -786,13 +822,33 @@ def print_(*args, **kwargs):
|
||||
_add_doc(reraise, """Reraise an exception.""")
|
||||
|
||||
if sys.version_info[0:2] < (3, 4):
|
||||
+ # This does exactly the same what the :func:`py3:functools.update_wrapper`
|
||||
+ # function does on Python versions after 3.2. It sets the ``__wrapped__``
|
||||
+ # attribute on ``wrapper`` object and it doesn't raise an error if any of
|
||||
+ # the attributes mentioned in ``assigned`` and ``updated`` are missing on
|
||||
+ # ``wrapped`` object.
|
||||
+ def _update_wrapper(wrapper, wrapped,
|
||||
+ assigned=functools.WRAPPER_ASSIGNMENTS,
|
||||
+ updated=functools.WRAPPER_UPDATES):
|
||||
+ for attr in assigned:
|
||||
+ try:
|
||||
+ value = getattr(wrapped, attr)
|
||||
+ except AttributeError:
|
||||
+ continue
|
||||
+ else:
|
||||
+ setattr(wrapper, attr, value)
|
||||
+ for attr in updated:
|
||||
+ getattr(wrapper, attr).update(getattr(wrapped, attr, {}))
|
||||
+ wrapper.__wrapped__ = wrapped
|
||||
+ return wrapper
|
||||
+ _update_wrapper.__doc__ = functools.update_wrapper.__doc__
|
||||
+
|
||||
def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS,
|
||||
updated=functools.WRAPPER_UPDATES):
|
||||
- def wrapper(f):
|
||||
- f = functools.wraps(wrapped, assigned, updated)(f)
|
||||
- f.__wrapped__ = wrapped
|
||||
- return f
|
||||
- return wrapper
|
||||
+ return functools.partial(_update_wrapper, wrapped=wrapped,
|
||||
+ assigned=assigned, updated=updated)
|
||||
+ wraps.__doc__ = functools.wraps.__doc__
|
||||
+
|
||||
else:
|
||||
wraps = functools.wraps
|
||||
|
||||
@@ -802,10 +858,22 @@ def with_metaclass(meta, *bases):
|
||||
# This requires a bit of explanation: the basic idea is to make a dummy
|
||||
# metaclass for one level of class instantiation that replaces itself with
|
||||
# the actual metaclass.
|
||||
- class metaclass(meta):
|
||||
+ class metaclass(type):
|
||||
|
||||
def __new__(cls, name, this_bases, d):
|
||||
- return meta(name, bases, d)
|
||||
+ if sys.version_info[:2] >= (3, 7):
|
||||
+ # This version introduced PEP 560 that requires a bit
|
||||
+ # of extra care (we mimic what is done by __build_class__).
|
||||
+ resolved_bases = types.resolve_bases(bases)
|
||||
+ if resolved_bases is not bases:
|
||||
+ d['__orig_bases__'] = bases
|
||||
+ else:
|
||||
+ resolved_bases = bases
|
||||
+ return meta(name, resolved_bases, d)
|
||||
+
|
||||
+ @classmethod
|
||||
+ def __prepare__(cls, name, this_bases):
|
||||
+ return meta.__prepare__(name, bases)
|
||||
return type.__new__(metaclass, 'temporary_class', (), {})
|
||||
|
||||
|
||||
@@ -821,13 +889,75 @@ def wrapper(cls):
|
||||
orig_vars.pop(slots_var)
|
||||
orig_vars.pop('__dict__', None)
|
||||
orig_vars.pop('__weakref__', None)
|
||||
+ if hasattr(cls, '__qualname__'):
|
||||
+ orig_vars['__qualname__'] = cls.__qualname__
|
||||
return metaclass(cls.__name__, cls.__bases__, orig_vars)
|
||||
return wrapper
|
||||
|
||||
|
||||
+def ensure_binary(s, encoding='utf-8', errors='strict'):
|
||||
+ """Coerce **s** to six.binary_type.
|
||||
+
|
||||
+ For Python 2:
|
||||
+ - `unicode` -> encoded to `str`
|
||||
+ - `str` -> `str`
|
||||
+
|
||||
+ For Python 3:
|
||||
+ - `str` -> encoded to `bytes`
|
||||
+ - `bytes` -> `bytes`
|
||||
+ """
|
||||
+ if isinstance(s, binary_type):
|
||||
+ return s
|
||||
+ if isinstance(s, text_type):
|
||||
+ return s.encode(encoding, errors)
|
||||
+ raise TypeError("not expecting type '%s'" % type(s))
|
||||
+
|
||||
+
|
||||
+def ensure_str(s, encoding='utf-8', errors='strict'):
|
||||
+ """Coerce *s* to `str`.
|
||||
+
|
||||
+ For Python 2:
|
||||
+ - `unicode` -> encoded to `str`
|
||||
+ - `str` -> `str`
|
||||
+
|
||||
+ For Python 3:
|
||||
+ - `str` -> `str`
|
||||
+ - `bytes` -> decoded to `str`
|
||||
+ """
|
||||
+ # Optimization: Fast return for the common case.
|
||||
+ if type(s) is str:
|
||||
+ return s
|
||||
+ if PY2 and isinstance(s, text_type):
|
||||
+ return s.encode(encoding, errors)
|
||||
+ elif PY3 and isinstance(s, binary_type):
|
||||
+ return s.decode(encoding, errors)
|
||||
+ elif not isinstance(s, (text_type, binary_type)):
|
||||
+ raise TypeError("not expecting type '%s'" % type(s))
|
||||
+ return s
|
||||
+
|
||||
+
|
||||
+def ensure_text(s, encoding='utf-8', errors='strict'):
|
||||
+ """Coerce *s* to six.text_type.
|
||||
+
|
||||
+ For Python 2:
|
||||
+ - `unicode` -> `unicode`
|
||||
+ - `str` -> `unicode`
|
||||
+
|
||||
+ For Python 3:
|
||||
+ - `str` -> `str`
|
||||
+ - `bytes` -> decoded to `str`
|
||||
+ """
|
||||
+ if isinstance(s, binary_type):
|
||||
+ return s.decode(encoding, errors)
|
||||
+ elif isinstance(s, text_type):
|
||||
+ return s
|
||||
+ else:
|
||||
+ raise TypeError("not expecting type '%s'" % type(s))
|
||||
+
|
||||
+
|
||||
def python_2_unicode_compatible(klass):
|
||||
"""
|
||||
- A decorator that defines __unicode__ and __str__ methods under Python 2.
|
||||
+ A class decorator that defines __unicode__ and __str__ methods under Python 2.
|
||||
Under Python 3 it does nothing.
|
||||
|
||||
To support Python 2 and 3 with a single code base, define a __str__ method
|
||||
36
community/aws-cli/botocore-2922.patch
Normal file
36
community/aws-cli/botocore-2922.patch
Normal file
@ -0,0 +1,36 @@
|
||||
From 59489584f929b2893a5909c9009d3bdd556552a9 Mon Sep 17 00:00:00 2001
|
||||
From: Nate Prewitt <nate.prewitt@gmail.com>
|
||||
Date: Mon, 20 Feb 2023 11:17:51 -0700
|
||||
Subject: [PATCH] Defer to system defaults for cipher suites with urllib3 2.0+
|
||||
|
||||
---
|
||||
awscli/botocore/httpsession.py | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/awscli/botocore/httpsession.py b/awscli/botocore/httpsession.py
|
||||
index 97a03644d6..48e2e5d269 100644
|
||||
--- a/awscli/botocore/httpsession.py
|
||||
+++ b/awscli/botocore/httpsession.py
|
||||
@@ -20,7 +20,6 @@
|
||||
from urllib3.exceptions import SSLError as URLLib3SSLError
|
||||
from urllib3.util.retry import Retry
|
||||
from urllib3.util.ssl_ import (
|
||||
- DEFAULT_CIPHERS,
|
||||
OP_NO_COMPRESSION,
|
||||
PROTOCOL_TLS,
|
||||
OP_NO_SSLv2,
|
||||
@@ -49,6 +48,14 @@
|
||||
except ImportError:
|
||||
from urllib3.util.ssl_ import SSLContext
|
||||
|
||||
+try:
|
||||
+ from urllib3.util.ssl_ import DEFAULT_CIPHERS
|
||||
+except ImportError:
|
||||
+ # Defer to system configuration starting with
|
||||
+ # urllib3 2.0. This will choose the ciphers provided by
|
||||
+ # Openssl 1.1.1+ or secure system defaults.
|
||||
+ DEFAULT_CIPHERS = None
|
||||
+
|
||||
import botocore.awsrequest
|
||||
from botocore.compat import (
|
||||
IPV6_ADDRZ_RE,
|
||||
27
community/aws-cli/botocore-2924.patch
Normal file
27
community/aws-cli/botocore-2924.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From 5ec04be95d1531bf551056f80d3f7d84d48e5138 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Grainger <tagrain@gmail.com>
|
||||
Date: Fri, 28 Apr 2023 12:06:22 +0100
|
||||
Subject: [PATCH] Do not set_ciphers(DEFAULT_CIPHERS) if DEFAULT_CIPHERS is
|
||||
None
|
||||
|
||||
Fixes #2921
|
||||
---
|
||||
awscli/botocore/httpsession.py | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/awscli/botocore/httpsession.py b/awscli/botocore/httpsession.py
|
||||
index 48e2e5d269..b3fe6e6c0c 100644
|
||||
--- a/awscli/botocore/httpsession.py
|
||||
+++ b/awscli/botocore/httpsession.py
|
||||
@@ -113,7 +113,10 @@ def create_urllib3_context(
|
||||
|
||||
context = SSLContext(ssl_version)
|
||||
|
||||
- context.set_ciphers(ciphers or DEFAULT_CIPHERS)
|
||||
+ if ciphers:
|
||||
+ context.set_ciphers(ciphers)
|
||||
+ elif DEFAULT_CIPHERS:
|
||||
+ context.set_ciphers(DEFAULT_CIPHERS)
|
||||
|
||||
# Setting the default here, as we may have no ssl module on import
|
||||
cert_reqs = ssl.CERT_REQUIRED if cert_reqs is None else cert_reqs
|
||||
85
community/aws-cli/botocore-2967.patch
Normal file
85
community/aws-cli/botocore-2967.patch
Normal file
@ -0,0 +1,85 @@
|
||||
diff -Naur tests/unit/botocore/test_client.py awscli-2.15.40_/tests/unit/botocore/test_client.py
|
||||
--- tests/unit/botocore/test_client.py 2024-04-20 15:00:39.465686191 +0800
|
||||
+++ awscli-2.15.40_/tests/unit/botocore/test_client.py 2024-04-20 15:07:29.335115713 +0800
|
||||
@@ -960,7 +960,7 @@
|
||||
lines = [
|
||||
(' Creates an iterator that will paginate through responses '
|
||||
'from :py:meth:`MyService.Client.test_operation`.'),
|
||||
- ' **Request Syntax** ',
|
||||
+ ' **Request Syntax**',
|
||||
' ::',
|
||||
' response_iterator = paginator.paginate(',
|
||||
" Foo='string',",
|
||||
@@ -976,17 +976,17 @@
|
||||
' :type Bar: string',
|
||||
' :param Bar: Documents Bar',
|
||||
' :type PaginationConfig: dict',
|
||||
- ' :param PaginationConfig: ',
|
||||
+ ' :param PaginationConfig:',
|
||||
(' A dictionary that provides parameters to control '
|
||||
'pagination.'),
|
||||
- ' - **MaxItems** *(integer) --* ',
|
||||
+ ' - **MaxItems** *(integer) --*',
|
||||
(' The total number of items to return. If the total '
|
||||
'number of items available is more than the value specified '
|
||||
'in max-items then a ``NextToken`` will be provided in the '
|
||||
'output that you can use to resume pagination.'),
|
||||
- ' - **PageSize** *(integer) --* ',
|
||||
+ ' - **PageSize** *(integer) --*',
|
||||
' The size of each page.',
|
||||
- ' - **StartingToken** *(string) --* ',
|
||||
+ ' - **StartingToken** *(string) --*',
|
||||
(' A token to specify where to start paginating. This is '
|
||||
'the ``NextToken`` from a previous response.'),
|
||||
' :returns: None',
|
||||
diff -Naur tests/unit/botocore/test_waiters.py awscli-2.15.40_/tests/unit/botocore/test_waiters.py
|
||||
--- tests/unit/botocore/test_waiters.py 2024-04-20 15:00:39.469019486 +0800
|
||||
+++ awscli-2.15.40_/tests/unit/botocore/test_waiters.py 2024-04-20 15:04:08.810188250 +0800
|
||||
@@ -648,7 +648,7 @@
|
||||
(' Polls :py:meth:`MyService.Client.foo` every 1 '
|
||||
'seconds until a successful state is reached. An error '
|
||||
'is returned after 1 failed checks.'),
|
||||
- ' **Request Syntax** ',
|
||||
+ ' **Request Syntax**',
|
||||
' ::',
|
||||
' waiter.wait(',
|
||||
" bar='string'",
|
||||
diff -Naur tests/unit/botocore/test_utils.py awscli-2.15.40_/tests/unit/botocore/test_utils.py
|
||||
--- tests/unit/botocore/test_utils.py 2024-04-20 12:09:38.883650919 +0800
|
||||
+++ awscli-2.15.40_/tests/unit/botocore/test_utils.py 2024-04-20 12:11:56.434812142 +0800
|
||||
@@ -1000,17 +1000,24 @@
|
||||
'https://bucket.s3.amazonaws.com/key.txt')
|
||||
|
||||
|
||||
-class TestSwitchToChunkedEncodingForNonSeekableObjects(unittest.TestCase):
|
||||
- def test_switch_to_chunked_encodeing_for_stream_like_object(self):
|
||||
- request = AWSRequest(
|
||||
- method='POST', headers={},
|
||||
- data=io.BufferedIOBase(b"some initial binary data"),
|
||||
- url='https://foo.amazonaws.com/bucket/key.txt'
|
||||
- )
|
||||
- prepared_request = request.prepare()
|
||||
- self.assertEqual(
|
||||
- prepared_request.headers, {'Transfer-Encoding': 'chunked'}
|
||||
- )
|
||||
+def test_chunked_encoding_used_for_stream_like_object():
|
||||
+ class BufferedStream(io.BufferedIOBase):
|
||||
+ """Class to ensure seek/tell don't work, but read is implemented."""
|
||||
+
|
||||
+ def __init__(self, value):
|
||||
+ self.value = io.BytesIO(value)
|
||||
+
|
||||
+ def read(self, size=-1):
|
||||
+ return self.value.read(size)
|
||||
+
|
||||
+ request = AWSRequest(
|
||||
+ method='POST',
|
||||
+ headers={},
|
||||
+ data=BufferedStream(b"some initial binary data"),
|
||||
+ url='https://foo.amazonaws.com/bucket/key.txt',
|
||||
+ )
|
||||
+ prepared_request = request.prepare()
|
||||
+ assert prepared_request.headers == {'Transfer-Encoding': 'chunked'}
|
||||
|
||||
|
||||
class TestInstanceCache(unittest.TestCase):
|
||||
77
community/aws-cli/botocore-2990-rebased.patch
Normal file
77
community/aws-cli/botocore-2990-rebased.patch
Normal file
@ -0,0 +1,77 @@
|
||||
From 86564e713ba922feafe3feb7883d5305cb6a0ec2 Mon Sep 17 00:00:00 2001
|
||||
From: Nate Prewitt <nate.prewitt@gmail.com>
|
||||
Date: Wed, 26 Jul 2023 17:36:30 -0600
|
||||
Subject: [PATCH 1/3] Move 100-continue behavior to use request API
|
||||
|
||||
---
|
||||
awscli/botocore/awsrequest.py | 37 +++++++++++++++++++++----------------
|
||||
1 file changed, 21 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/awscli/botocore/awsrequest.py b/awscli/botocore/awsrequest.py
|
||||
index f00a0dde57..9123e65c9d 100644
|
||||
--- a/awscli/botocore/awsrequest.py
|
||||
+++ b/awscli/botocore/awsrequest.py
|
||||
@@ -66,33 +66,34 @@ class AWSConnection:
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(AWSConnection, self).__init__(*args, **kwargs)
|
||||
self._original_response_cls = self.response_class
|
||||
- # We'd ideally hook into httplib's states, but they're all
|
||||
- # __mangled_vars so we use our own state var. This variable is set
|
||||
- # when we receive an early response from the server. If this value is
|
||||
- # set to True, any calls to send() are noops. This value is reset to
|
||||
- # false every time _send_request is called. This is to workaround the
|
||||
- # fact that py2.6 (and only py2.6) has a separate send() call for the
|
||||
- # body in _send_request, as opposed to endheaders(), which is where the
|
||||
- # body is sent in all versions > 2.6.
|
||||
+ # This variable is set when we receive an early response from the
|
||||
+ # server. If this value is set to True, any calls to send() are noops.
|
||||
+ # This value is reset to false every time _send_request is called.
|
||||
+ # This is to workaround changes in urllib3 2.0 which uses separate
|
||||
+ # send() calls in request() instead of delegating to endheaders(),
|
||||
+ # which is where the body is sent in CPython's HTTPConnection.
|
||||
self._response_received = False
|
||||
self._expect_header_set = False
|
||||
+ self._send_called = False
|
||||
|
||||
def close(self):
|
||||
super(AWSConnection, self).close()
|
||||
# Reset all of our instance state we were tracking.
|
||||
self._response_received = False
|
||||
self._expect_header_set = False
|
||||
+ self._send_called = False
|
||||
self.response_class = self._original_response_cls
|
||||
|
||||
- def _send_request(self, method, url, body, headers, *args, **kwargs):
|
||||
+ def request(self, method, url, body=None, headers=None, *args, **kwargs):
|
||||
+ if headers is None:
|
||||
+ headers = {}
|
||||
self._response_received = False
|
||||
if headers.get('Expect', b'') == b'100-continue':
|
||||
self._expect_header_set = True
|
||||
else:
|
||||
self._expect_header_set = False
|
||||
self.response_class = self._original_response_cls
|
||||
- rval = super(AWSConnection, self)._send_request(
|
||||
- method, url, body, headers, *args, **kwargs)
|
||||
+ rval = super().request(method, url, body, headers, *args, **kwargs)
|
||||
self._expect_header_set = False
|
||||
return rval
|
||||
|
||||
@@ -210,8 +210,15 @@ def _send_message_body(self, message_body):
|
||||
|
||||
def send(self, str):
|
||||
if self._response_received:
|
||||
- logger.debug("send() called, but reseponse already received. "
|
||||
- "Not sending data.")
|
||||
+ if not self._send_called:
|
||||
+ # urllib3 2.0 chunks and calls send potentially
|
||||
+ # thousands of times inside `request` unlike the
|
||||
+ # standard library. Only log this once for sanity.
|
||||
+ logger.debug(
|
||||
+ "send() called, but response already received. "
|
||||
+ "Not sending data."
|
||||
+ )
|
||||
+ self._send_called = True
|
||||
return
|
||||
return super(AWSConnection, self).send(str)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user