Skip to content

Commit 54cdf1d

Browse files
authored
Add nested client creation method
Create nested client method
2 parents 6234b47 + b5c9c78 commit 54cdf1d

3 files changed

Lines changed: 20 additions & 4 deletions

File tree

s3transfer/crt.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
from s3transfer.utils import (
4747
CallArgs,
4848
OSUtils,
49+
create_nested_client,
4950
get_callbacks,
5051
is_s3express_bucket,
5152
)
@@ -481,7 +482,7 @@ def __init__(self, session, client_kwargs=None):
481482
if client_kwargs is None:
482483
client_kwargs = {}
483484
self._resolve_client_config(session, client_kwargs)
484-
self._client = session.create_client(**client_kwargs)
485+
self._client = create_nested_client(session, **client_kwargs)
485486
self._client.meta.events.register(
486487
'request-created.s3.*', self._capture_http_request
487488
)

s3transfer/processpool.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@
214214
OSUtils,
215215
calculate_num_parts,
216216
calculate_range_parameter,
217+
create_nested_client,
217218
)
218219

219220
logger = logging.getLogger(__name__)
@@ -577,9 +578,8 @@ def __init__(self, client_kwargs=None):
577578

578579
def create_client(self):
579580
"""Create a botocore S3 client"""
580-
return botocore.session.Session().create_client(
581-
's3', **self._client_kwargs
582-
)
581+
session = botocore.session.Session()
582+
return create_nested_client(session, 's3', **self._client_kwargs)
583583

584584

585585
class TransferMonitor:

s3transfer/utils.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,3 +831,18 @@ def set_default_checksum_algorithm(extra_args):
831831
if any(checksum in extra_args for checksum in FULL_OBJECT_CHECKSUM_ARGS):
832832
return
833833
extra_args.setdefault("ChecksumAlgorithm", DEFAULT_CHECKSUM_ALGORITHM)
834+
835+
836+
# NOTE: The following interfaces are considered private and are subject
837+
# to abrupt breaking changes. Please do not use them directly.
838+
839+
try:
840+
from botocore.utils import create_nested_client as create_client
841+
except ImportError:
842+
843+
def create_client(session, *args, **kwargs):
844+
return session.create_client(*args, **kwargs)
845+
846+
847+
def create_nested_client(session, service_name, **kwargs):
848+
return create_client(session, service_name, **kwargs)

0 commit comments

Comments
 (0)