dev-python/boto: Remove unused ebuild

Google-compute-engine used to depend on boto, but it has been booted
from our tree so we can remove boto as well.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
This commit is contained in:
Jeremi Piotrowski 2024-04-02 11:18:59 +00:00
parent 8d3f25d380
commit 1c8b3a5497
12 changed files with 0 additions and 464 deletions

View File

@ -1 +0,0 @@
DIST boto-2.49.0.tar.gz 1478498 BLAKE2B 6a897ea162f5f4bd34a2d488a3e3897f7f2f5b8707dd0922c01b6a0b90ea577223bf3e588b6685bda1f2bc0e92af426711fcba67a70377183465a530065c6c84 SHA512 2175cf30cd25bbc05812e83e5ade7668c3e21b1bb09aa1b43f0f0ac7d6967a646394fb52c9be673ebb65618c5b33a52d6f31f6da702f5cd1d6c9a18169476dd4

View File

@ -1,8 +0,0 @@
This is a straight copy of Gentoo package, with no modifications at
all. The reason for keeping it in overlay is that upstream plans to
drop the package on 28th March, 2024.
The package is needed only by the app-emulation/google-compute-engine
package, which is quite old (version string mentions 2019), so work
needs to be done to update it in order to drop the dependency on the
obsolete boto package (Gentoo has dev-python/boto3 package).

View File

@ -1,63 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..11} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 pypi
DESCRIPTION="Amazon Web Services API"
HOMEPAGE="https://github.com/boto/boto https://pypi.org/project/boto/"
LICENSE="MIT"
SLOT="0"
KEYWORDS="amd64 arm arm64 ppc ~ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
PATCHES=(
# taken from https://bugs.debian.org/909545
"${FILESDIR}"/${P}-try-to-add-SNI-support-v3.patch
"${FILESDIR}"/${P}-py38.patch
"${FILESDIR}"/${P}-py3-socket-binary.patch
"${FILESDIR}"/${P}-py3-httplib-strict.patch
"${FILESDIR}"/${P}-py3-server-port.patch
"${FILESDIR}"/${P}-unbundle-six.patch
"${FILESDIR}"/${P}-py310.patch
"${FILESDIR}"/${P}-mock-spec.patch
)
RDEPEND="
>=dev-python/six-1.12.0[${PYTHON_USEDEP}]
"
BDEPEND="
${RDEPEND}
test? (
dev-python/httpretty[${PYTHON_USEDEP}]
dev-python/keyring[${PYTHON_USEDEP}]
dev-python/lxml[${PYTHON_USEDEP}]
dev-python/mock[${PYTHON_USEDEP}]
dev-python/paramiko[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
dev-python/rsa[${PYTHON_USEDEP}]
dev-python/selenium[${PYTHON_USEDEP}]
)"
distutils_enable_tests nose
src_prepare() {
# remove bundled libs.
rm -f "${S}"/boto/vendored/six.py || die
# broken, not worth fixing
rm tests/unit/cloudfront/test_signed_urls.py || die
# fix tests
mkdir -p "${HOME}"/.ssh || die
touch "${HOME}"/.ssh/known_hosts || die
distutils-r1_src_prepare
}
python_test() {
distutils-r1_python_test tests/unit
}

View File

@ -1,12 +0,0 @@
diff -ur boto-2.49.0.orig/tests/unit/ec2/test_volume.py boto-2.49.0/tests/unit/ec2/test_volume.py
--- boto-2.49.0.orig/tests/unit/ec2/test_volume.py 2022-11-02 22:22:36.173725700 -0000
+++ boto-2.49.0/tests/unit/ec2/test_volume.py 2022-11-02 22:24:26.502590025 -0000
@@ -55,7 +55,7 @@
@mock.patch("boto.resultset.ResultSet")
def test_startElement_with_name_tagSet_calls_ResultSet(self, ResultSet, startElement):
startElement.return_value = None
- result_set = mock.Mock(ResultSet([("item", Tag)]))
+ result_set = ResultSet([("item", Tag)])
volume = Volume()
volume.tags = result_set
retval = volume.startElement("tagSet", None, None)

View File

@ -1,35 +0,0 @@
https://github.com/boto/boto/commit/4f4dcb31fe852c05ce19b44eb9d5b5d747e36f7c
https://github.com/boto/boto/pull/2718
From 4f4dcb31fe852c05ce19b44eb9d5b5d747e36f7c Mon Sep 17 00:00:00 2001
From: Lee Ball <43632885+catleeball@users.noreply.github.com>
Date: Mon, 10 Jun 2019 16:02:53 -0700
Subject: [PATCH] Remove `strict=True` from http_client (#6)
In Python 3.4, the `strict` kwarg was removed[1]. We are removing it
here too.
Alternatively, we can leave in `strict=True` for 2.x, but I chose to
remove it entirely to maintain consistent behavior across versions.
[1]: https://docs.python.org/3/library/http.client.html
---
boto/connection.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/boto/connection.py b/boto/connection.py
index c731173bb4eb..54e26fb2de16 100644
--- a/boto/connection.py
+++ b/boto/connection.py
@@ -807,7 +807,7 @@ class AWSAuthConnection(object):
sock.sendall(six.ensure_binary("\r\n"))
else:
sock.sendall(six.ensure_binary("\r\n"))
- resp = http_client.HTTPResponse(sock, strict=True, debuglevel=self.debug)
+ resp = http_client.HTTPResponse(sock, debuglevel=self.debug)
resp.begin()
if resp.status != 200:
--
2.28.0

View File

@ -1,42 +0,0 @@
https://github.com/boto/boto/commit/b9f6cb0ab717ea76e2780c7fddd1cd36b3bf7d63
From b9f6cb0ab717ea76e2780c7fddd1cd36b3bf7d63 Mon Sep 17 00:00:00 2001
From: Matt Houglum <houglum@google.com>
Date: Fri, 21 Jun 2019 15:09:11 -0700
Subject: [PATCH] Make server_name() behave correctly for PY3
...because Python-2.6-or-newer doesn't just include Python 2.6 and 2.7.
---
boto/connection.py | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/boto/connection.py b/boto/connection.py
index 54e26fb2de16..bbb25d8fb842 100644
--- a/boto/connection.py
+++ b/boto/connection.py
@@ -650,17 +650,13 @@ class AWSAuthConnection(object):
if port == 80:
signature_host = self.host
else:
- # This unfortunate little hack can be attributed to
- # a difference in the 2.6 version of http_client. In old
- # versions, it would append ":443" to the hostname sent
- # in the Host header and so we needed to make sure we
- # did the same when calculating the V2 signature. In 2.6
- # (and higher!)
- # it no longer does that. Hence, this kludge.
- if ((ON_APP_ENGINE and sys.version[:3] == '2.5') or
- sys.version[:3] in ('2.6', '2.7')) and port == 443:
+ ver_int = sys.version_info[0] * 10 + sys.version_info[1]
+ if port == 443 and ver_int >= 26: # Py >= 2.6
signature_host = self.host
else:
+ # In versions < 2.6, Python's http_client would append ":443"
+ # to the hostname sent in the Host header and so we needed to
+ # make sure we did the same when calculating the V2 signature.
signature_host = '%s:%d' % (self.host, port)
return signature_host
--
2.28.0

View File

@ -1,59 +0,0 @@
https://github.com/boto/boto/commit/d2cb697b32c297858ecc36701a5a4176818ab36d
https://github.com/boto/boto/pull/2718
https://github.com/boto/boto/pull/2893
https://github.com/boto/boto/pull/3699
From d2cb697b32c297858ecc36701a5a4176818ab36d Mon Sep 17 00:00:00 2001
From: Cat Lee Ball <cball@google.com>
Date: Mon, 10 Jun 2019 13:31:11 -0700
Subject: [PATCH] Ensure binary strings sent to socket
When running pre-release tests with proxied connections, it appeared a
few spots in connection.py would fail under Python 3 since the
socket.sendall method expects binary strings rather than unicode.
---
boto/connection.py | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/boto/connection.py b/boto/connection.py
index a0d89a51f49c..d084d1f881fb 100644
--- a/boto/connection.py
+++ b/boto/connection.py
@@ -796,17 +796,17 @@ class AWSAuthConnection(object):
else:
sock = socket.create_connection((self.proxy, int(self.proxy_port)))
boto.log.debug("Proxy connection: CONNECT %s HTTP/1.0\r\n", host)
- sock.sendall("CONNECT %s HTTP/1.0\r\n" % host)
- sock.sendall("User-Agent: %s\r\n" % UserAgent)
+ sock.sendall(six.ensure_binary("CONNECT %s HTTP/1.0\r\n" % host))
+ sock.sendall(six.ensure_binary("User-Agent: %s\r\n" % UserAgent))
if self.proxy_user and self.proxy_pass:
for k, v in self.get_proxy_auth_header().items():
- sock.sendall("%s: %s\r\n" % (k, v))
+ sock.sendall(six.ensure_binary("%s: %s\r\n" % (k, v)))
# See discussion about this config option at
# https://groups.google.com/forum/?fromgroups#!topic/boto-dev/teenFvOq2Cc
if config.getbool('Boto', 'send_crlf_after_proxy_auth_headers', False):
- sock.sendall("\r\n")
+ sock.sendall(six.ensure_binary("\r\n"))
else:
- sock.sendall("\r\n")
+ sock.sendall(six.ensure_binary("\r\n"))
resp = http_client.HTTPResponse(sock, strict=True, debuglevel=self.debug)
resp.begin()
@@ -814,9 +814,10 @@ class AWSAuthConnection(object):
# Fake a socket error, use a code that make it obvious it hasn't
# been generated by the socket library
raise socket.error(-71,
+ six.ensure_binary(
"Error talking to HTTP proxy %s:%s: %s (%s)" %
(self.proxy, self.proxy_port,
- resp.status, resp.reason))
+ resp.status, resp.reason)))
# We can safely close the response, it duped the original socket
resp.close()
--
2.28.0

View File

@ -1,44 +0,0 @@
diff --git a/boto/dynamodb/types.py b/boto/dynamodb/types.py
index d9aaaa4c..3f8d8601 100644
--- a/boto/dynamodb/types.py
+++ b/boto/dynamodb/types.py
@@ -27,7 +27,7 @@ Python types and vice-versa.
import base64
from decimal import (Decimal, DecimalException, Context,
Clamped, Overflow, Inexact, Underflow, Rounded)
-from collections import Mapping
+from collections.abc import Mapping
from boto.dynamodb.exceptions import DynamoDBNumberError
from boto.compat import filter, map, six, long_type
diff --git a/boto/mws/connection.py b/boto/mws/connection.py
index 687fae74..3a1f5f80 100644
--- a/boto/mws/connection.py
+++ b/boto/mws/connection.py
@@ -21,7 +21,7 @@
import xml.sax
import hashlib
import string
-import collections
+import collections.abc
from boto.connection import AWSQueryConnection
from boto.exception import BotoServerError
import boto.mws.exception
@@ -109,7 +109,7 @@ def http_body(field):
def destructure_object(value, into, prefix, members=False):
if isinstance(value, boto.mws.response.ResponseElement):
destructure_object(value.__dict__, into, prefix, members=members)
- elif isinstance(value, collections.Mapping):
+ elif isinstance(value, collections.abc.Mapping):
for name in value:
if name.startswith('_'):
continue
@@ -117,7 +117,7 @@ def destructure_object(value, into, prefix, members=False):
members=members)
elif isinstance(value, six.string_types):
into[prefix] = value
- elif isinstance(value, collections.Iterable):
+ elif isinstance(value, collections.abc.Iterable):
for index, element in enumerate(value):
suffix = (members and '.member.' or '.') + str(index + 1)
destructure_object(element, into, prefix + suffix,

View File

@ -1,54 +0,0 @@
diff --git a/boto/ecs/item.py b/boto/ecs/item.py
index 79177a31..292b05af 100644
--- a/boto/ecs/item.py
+++ b/boto/ecs/item.py
@@ -21,7 +21,7 @@
import xml.sax
-import cgi
+import html
from boto.compat import six, StringIO
class ResponseGroup(xml.sax.ContentHandler):
@@ -67,7 +67,7 @@ class ResponseGroup(xml.sax.ContentHandler):
return None
def endElement(self, name, value, connection):
- self._xml.write("%s</%s>" % (cgi.escape(value).replace("&amp;amp;", "&amp;"), name))
+ self._xml.write("%s</%s>" % (html.escape(value).replace("&amp;amp;", "&amp;"), name))
if len(self._nodepath) == 0:
return
obj = None
diff --git a/tests/unit/utils/test_utils.py b/tests/unit/utils/test_utils.py
index db15b56d..89d1a524 100644
--- a/tests/unit/utils/test_utils.py
+++ b/tests/unit/utils/test_utils.py
@@ -85,7 +85,7 @@ class TestPassword(unittest.TestCase):
def hmac_hashfunc(cls, msg):
if not isinstance(msg, bytes):
msg = msg.encode('utf-8')
- return hmac.new(b'mysecretkey', msg)
+ return hmac.new(b'mysecretkey', msg, digestmod='MD5')
class HMACPassword(Password):
hashfunc = hmac_hashfunc
@@ -95,15 +95,15 @@ class TestPassword(unittest.TestCase):
password.set('foo')
self.assertEquals(str(password),
- hmac.new(b'mysecretkey', b'foo').hexdigest())
+ hmac.new(b'mysecretkey', b'foo', digestmod='MD5').hexdigest())
def test_constructor(self):
- hmac_hashfunc = lambda msg: hmac.new(b'mysecretkey', msg)
+ hmac_hashfunc = lambda msg: hmac.new(b'mysecretkey', msg, digestmod='MD5')
password = Password(hashfunc=hmac_hashfunc)
password.set('foo')
self.assertEquals(password.str,
- hmac.new(b'mysecretkey', b'foo').hexdigest())
+ hmac.new(b'mysecretkey', b'foo', digestmod='MD5').hexdigest())
class TestPythonizeName(unittest.TestCase):

View File

@ -1,104 +0,0 @@
From f5e7f6c98b46ff622f60a4661ffc9ce07216d109 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Date: Sat, 29 Sep 2018 21:47:11 +0200
Subject: [PATCH] boto: try to add SNI support
Add SNI support. Newer OpenSSL (with TLS1.3) fail to connect if the
hostname is missing.
Link: https://bugs.debian.org/bug=909545
Tested-by: Witold Baryluk <witold.baryluk@gmail.com>
Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
boto/connection.py | 19 ++++++++++---------
boto/https_connection.py | 22 +++++++++++-----------
2 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/boto/connection.py b/boto/connection.py
index 34b428f101df7..b4867a7657465 100644
--- a/boto/connection.py
+++ b/boto/connection.py
@@ -778,8 +778,10 @@
def proxy_ssl(self, host=None, port=None):
if host and port:
+ cert_host = host
host = '%s:%d' % (host, port)
else:
+ cert_host = self.host
host = '%s:%d' % (self.host, self.port)
# Seems properly to use timeout for connect too
timeout = self.http_connection_kwargs.get("timeout")
@@ -824,23 +824,24 @@ DEFAULT_CA_CERTS_FILE = os.path.join(os.path.dirname(os.path.abspath(boto.cacert
h = http_client.HTTPConnection(host)
if self.https_validate_certificates and HAVE_HTTPS_CONNECTION:
+ context = ssl.create_default_context()
+ context.verify_mode = ssl.CERT_REQUIRED
+ context.check_hostname = True
+
msg = "wrapping ssl socket for proxied connection; "
if self.ca_certificates_file:
msg += "CA certificate file=%s" % self.ca_certificates_file
+ context.load_verify_locations(cafile=self.ca_certificates_file)
else:
msg += "using system provided SSL certs"
+ context.load_default_certs()
boto.log.debug(msg)
key_file = self.http_connection_kwargs.get('key_file', None)
cert_file = self.http_connection_kwargs.get('cert_file', None)
- sslSock = ssl.wrap_socket(sock, keyfile=key_file,
- certfile=cert_file,
- cert_reqs=ssl.CERT_REQUIRED,
- ca_certs=self.ca_certificates_file)
- cert = sslSock.getpeercert()
- hostname = self.host.split(':', 0)[0]
- if not https_connection.ValidateCertificateHostname(cert, hostname):
- raise https_connection.InvalidCertificateException(
- hostname, cert, 'hostname mismatch')
+ if key_file:
+ context.load_cert_chain(certfile=cert_file, keyfile=key_file)
+
+ sslSock = context.wrap_socket(sock, server_hostname=cert_host)
else:
# Fallback for old Python without ssl.wrap_socket
if hasattr(http_client, 'ssl'):
diff --git a/boto/https_connection.py b/boto/https_connection.py
index ddc31a152292e..a5076f6f9b261 100644
--- a/boto/https_connection.py
+++ b/boto/https_connection.py
@@ -119,20 +119,20 @@ from boto.compat import six, http_client
sock = socket.create_connection((self.host, self.port), self.timeout)
else:
sock = socket.create_connection((self.host, self.port))
+
+ context = ssl.create_default_context()
+ context.verify_mode = ssl.CERT_REQUIRED
+ context.check_hostname = True
+ if self.key_file:
+ context.load_cert_chain(certfile=self.cert_file, keyfile=self.key_file)
+
msg = "wrapping ssl socket; "
if self.ca_certs:
msg += "CA certificate file=%s" % self.ca_certs
+ context.load_verify_locations(cafile=self.ca_certs)
else:
msg += "using system provided SSL certs"
+ context.load_default_certs()
boto.log.debug(msg)
- self.sock = ssl.wrap_socket(sock, keyfile=self.key_file,
- certfile=self.cert_file,
- cert_reqs=ssl.CERT_REQUIRED,
- ca_certs=self.ca_certs)
- cert = self.sock.getpeercert()
- hostname = self.host.split(':', 0)[0]
- if not ValidateCertificateHostname(cert, hostname):
- raise InvalidCertificateException(hostname,
- cert,
- 'remote hostname "%s" does not match '
- 'certificate' % hostname)
+
+ self.sock = context.wrap_socket(sock, server_hostname=self.host)
--
2.19.0

View File

@ -1,28 +0,0 @@
use the system copy of six
--- a/boto/compat.py
+++ b/boto/compat.py
@@ -46,16 +46,16 @@ except (AttributeError, ImportError):
# This is probably running on App Engine.
expanduser = (lambda x: x)
-from boto.vendored import six
+import six
-from boto.vendored.six import BytesIO, StringIO
-from boto.vendored.six.moves import filter, http_client, map, _thread, \
+from six import BytesIO, StringIO
+from six.moves import filter, http_client, map, _thread, \
urllib, zip
-from boto.vendored.six.moves.queue import Queue
-from boto.vendored.six.moves.urllib.parse import parse_qs, quote, unquote, \
+from six.moves.queue import Queue
+from six.moves.urllib.parse import parse_qs, quote, unquote, \
urlparse, urlsplit
-from boto.vendored.six.moves.urllib.parse import unquote_plus
-from boto.vendored.six.moves.urllib.request import urlopen
+from six.moves.urllib.parse import unquote_plus
+from six.moves.urllib.request import urlopen
if six.PY3:
# StandardError was removed, so use the base exception type instead

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Python</name>
</maintainer>
<stabilize-allarches/>
<upstream>
<remote-id type="google-code">boto</remote-id>
<remote-id type="pypi">boto</remote-id>
<remote-id type="github">boto/boto</remote-id>
</upstream>
</pkgmetadata>