Describe the bug
Importing the latest boto3 (1.42.88) triggers an ImportError in s3transfer, due to a missing 'six' import from 'botocore.compat'. This appears to be caused by s3transfer expecting 'six' in botocore.compat, which was removed in recent botocore updates (see related: boto/s3transfer#376). The error occurs even with default imports, making boto3 unusable with compatible s3transfer and botocore versions out of the box.
Regression Issue
Expected Behavior
boto3 (and s3transfer) should import without error when installed with compatible package versions, without requiring users to pin old botocore versions or patch s3transfer.
Current Behavior
When using the latest boto3 (1.42.88) which depends on recent botocore and s3transfer versions, importing boto3 results in the following error:
ImportError: cannot import name 'six' from 'botocore.compat' (.../botocore/compat.py)
This happens immediately on import due to a dead import that is no longer present in botocore.compat. See s3transfer issue #376 for the underlying cause: two unused s3transfer imports expect 'six' in botocore.compat, but 'six' was removed from botocore.compat as of v1.42.88.
Reproduction Steps
Create a project with the following pyproject.toml:
[project]
name = "s3transfer-import"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"boto3"
]
In a Python 3.11 environment, run:
import boto3 # or: import s3transfer
This triggers:
ImportError: cannot import name 'six' from 'botocore.compat' (.../botocore/compat.py)
Possible Solution
Ensure that new versions of boto3 do not depend on s3transfer versions that have dead imports of 'six' from botocore.compat. The s3transfer fix is to remove the two unused imports (see boto/s3transfer#376). Either update s3transfer dependency range or coordinate releases that mutually address this breaking change.
Additional Information/Context
This is directly related to boto/s3transfer#376 which describes and implements a fix for the root cause in s3transfer. The issue in boto3 arises because the dependency chain allows incompatible botocore/s3transfer versions to be installed together.
SDK version used
boto3 1.42.88, botocore 1.42.88, s3transfer (latest as of April 2026)
Environment details (OS name and version, etc.)
Python >=3.9, all operating systems; issue is version/dependency-related, not environment-specific.
Describe the bug
Importing the latest boto3 (1.42.88) triggers an ImportError in s3transfer, due to a missing 'six' import from 'botocore.compat'. This appears to be caused by s3transfer expecting 'six' in botocore.compat, which was removed in recent botocore updates (see related: boto/s3transfer#376). The error occurs even with default imports, making boto3 unusable with compatible s3transfer and botocore versions out of the box.
Regression Issue
Expected Behavior
boto3 (and s3transfer) should import without error when installed with compatible package versions, without requiring users to pin old botocore versions or patch s3transfer.
Current Behavior
When using the latest boto3 (1.42.88) which depends on recent botocore and s3transfer versions, importing boto3 results in the following error:
ImportError: cannot import name 'six' from 'botocore.compat' (.../botocore/compat.py)
This happens immediately on import due to a dead import that is no longer present in botocore.compat. See s3transfer issue #376 for the underlying cause: two unused s3transfer imports expect 'six' in botocore.compat, but 'six' was removed from botocore.compat as of v1.42.88.
Reproduction Steps
Create a project with the following
pyproject.toml:In a Python 3.11 environment, run:
This triggers:
ImportError: cannot import name 'six' from 'botocore.compat' (.../botocore/compat.py)
Possible Solution
Ensure that new versions of boto3 do not depend on s3transfer versions that have dead imports of 'six' from botocore.compat. The s3transfer fix is to remove the two unused imports (see boto/s3transfer#376). Either update s3transfer dependency range or coordinate releases that mutually address this breaking change.
Additional Information/Context
This is directly related to boto/s3transfer#376 which describes and implements a fix for the root cause in s3transfer. The issue in boto3 arises because the dependency chain allows incompatible botocore/s3transfer versions to be installed together.
SDK version used
boto3 1.42.88, botocore 1.42.88, s3transfer (latest as of April 2026)
Environment details (OS name and version, etc.)
Python >=3.9, all operating systems; issue is version/dependency-related, not environment-specific.