Skip to content

Importing boto3 1.42.88 triggers s3transfer ImportError (botocore.compat 'six') #4763

@galuszkm

Description

@galuszkm

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

  • Select this option if this issue appears to be a regression.

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.

Metadata

Metadata

Labels

bugThis issue is a confirmed bug.dependenciesThis issue is a problem in a dependency.p1This is a high priority issueresponse-requestedWaiting on additional information or feedback.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions