Bug 2073168

Summary: Latest 'python-s3transfer' package breaks 'python-boto3' when used with 'python-requests'
Product: Red Hat Enterprise Linux 7 Reporter: Jon McKenzie <jcmcken>
Component: python-s3transferAssignee: Oyvind Albrigtsen <oalbrigt>
Status: ASSIGNED --- QA Contact: Brandon Perkins <bperkins>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 7.9CC: bperkins
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Jon McKenzie 2022-04-07 19:53:34 UTC
Description of problem:

Tools using the 'python-requests' package and 'python-boto3' package (which has 'python-s3transfer' as a dependency) together break with this latest version with a Python ImportError

Version-Release number of selected component (if applicable):


How reproducible: Always

Steps to Reproduce:
1. Install python-requests and python-boto3 (with python-s3transfer 0.1.13-1.el7_9.2 as dependency)
2. Open a Python REPL and run 'import requests' and then 'import boto3'. Observe the ImportError exception
3. Open a brand new Python REPL and run just 'import boto3'. No import exception occurs.
4. Downgrade python-s3transfer to 0.1.13-1.el7.0.1 and run either the steps from #2 or #3 above. No import error occurs.

Actual results:

>>> import requests
>>> import boto3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/boto3/__init__.py", line 16, in <module>
    from boto3.session import Session
  File "/usr/lib/python2.7/site-packages/boto3/session.py", line 19, in <module>
    import botocore.session
  File "/usr/lib/fence-agents/bundled/botocore/session.py", line 29, in <module>
    import botocore.credentials
  File "/usr/lib/fence-agents/bundled/botocore/credentials.py", line 34, in <module>
    from botocore.config import Config
  File "/usr/lib/fence-agents/bundled/botocore/config.py", line 16, in <module>
    from botocore.endpoint import DEFAULT_TIMEOUT, MAX_POOL_CONNECTIONS
  File "/usr/lib/fence-agents/bundled/botocore/endpoint.py", line 22, in <module>
    from botocore.awsrequest import create_request_object
  File "/usr/lib/fence-agents/bundled/botocore/awsrequest.py", line 24, in <module>
    import botocore.utils
  File "/usr/lib/fence-agents/bundled/botocore/utils.py", line 32, in <module>
    import botocore.httpsession
  File "/usr/lib/fence-agents/bundled/botocore/httpsession.py", line 10, in <module>
    from urllib3.util.ssl_ import (
ImportError: cannot import name PROTOCOL_TLS

Expected results:

>>> import requests
>>> import boto3