summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/s3_handler.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/spack/spack/s3_handler.py b/lib/spack/spack/s3_handler.py
index 9f775abafb..932ba4611d 100644
--- a/lib/spack/spack/s3_handler.py
+++ b/lib/spack/spack/s3_handler.py
@@ -3,7 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-from io import BufferedReader
+from io import BufferedReader, IOBase
import six
import six.moves.urllib.error as urllib_error
@@ -23,11 +23,15 @@ import spack.util.url as url_util
# https://github.com/python/cpython/pull/3249
class WrapStream(BufferedReader):
def __init__(self, raw):
- raw.readable = lambda: True
- raw.writable = lambda: False
- raw.seekable = lambda: False
- raw.closed = False
- raw.flush = lambda: None
+ # In botocore >=1.23.47, StreamingBody inherits from IOBase, so we
+ # only add missing attributes in older versions.
+ # https://github.com/boto/botocore/commit/a624815eabac50442ed7404f3c4f2664cd0aa784
+ if not isinstance(raw, IOBase):
+ raw.readable = lambda: True
+ raw.writable = lambda: False
+ raw.seekable = lambda: False
+ raw.closed = False
+ raw.flush = lambda: None
super(WrapStream, self).__init__(raw)
def detach(self):