@@ -249,18 +249,31 @@ class TransferConfig(S3TransferConfig):
249249 'max_concurrency' : 'max_request_concurrency' ,
250250 'max_io_queue' : 'max_io_queue_size' ,
251251 }
252+ DEFAULTS = {
253+ 'multipart_threshold' : 8 * MB ,
254+ 'max_concurrency' : 10 ,
255+ 'max_request_concurrency' : 10 ,
256+ 'multipart_chunksize' : 8 * MB ,
257+ 'num_download_attempts' : 5 ,
258+ 'max_io_queue' : 100 ,
259+ 'max_io_queue_size' : 100 ,
260+ 'io_chunksize' : 256 * KB ,
261+ 'use_threads' : True ,
262+ 'max_bandwidth' : None ,
263+ 'preferred_transfer_client' : constants .AUTO_RESOLVE_TRANSFER_CLIENT ,
264+ }
252265
253266 def __init__ (
254267 self ,
255- multipart_threshold = 8 * MB ,
256- max_concurrency = 10 ,
257- multipart_chunksize = 8 * MB ,
258- num_download_attempts = 5 ,
259- max_io_queue = 100 ,
260- io_chunksize = 256 * KB ,
261- use_threads = True ,
262- max_bandwidth = None ,
263- preferred_transfer_client = constants . AUTO_RESOLVE_TRANSFER_CLIENT ,
268+ multipart_threshold = S3TransferConfig . UNSET_DEFAULT ,
269+ max_concurrency = S3TransferConfig . UNSET_DEFAULT ,
270+ multipart_chunksize = S3TransferConfig . UNSET_DEFAULT ,
271+ num_download_attempts = S3TransferConfig . UNSET_DEFAULT ,
272+ max_io_queue = S3TransferConfig . UNSET_DEFAULT ,
273+ io_chunksize = S3TransferConfig . UNSET_DEFAULT ,
274+ use_threads = S3TransferConfig . UNSET_DEFAULT ,
275+ max_bandwidth = S3TransferConfig . UNSET_DEFAULT ,
276+ preferred_transfer_client = S3TransferConfig . UNSET_DEFAULT ,
264277 ):
265278 """Configuration object for managed S3 transfers
266279
@@ -325,7 +338,11 @@ def __init__(
325338 # S3TransferConfig so we add aliases so you can still access the
326339 # old version of the names.
327340 for alias in self .ALIAS :
328- setattr (self , alias , getattr (self , self .ALIAS [alias ]))
341+ setattr (
342+ self ,
343+ alias ,
344+ object .__getattribute__ (self , self .ALIAS [alias ]),
345+ )
329346 self .use_threads = use_threads
330347 self .preferred_transfer_client = preferred_transfer_client
331348
@@ -337,6 +354,15 @@ def __setattr__(self, name, value):
337354 # Always set the value of the actual name provided.
338355 super ().__setattr__ (name , value )
339356
357+ def __getattribute__ (self , item ):
358+ value = object .__getattribute__ (self , item )
359+ defaults = object .__getattribute__ (self , 'DEFAULTS' )
360+ if item not in defaults :
361+ return value
362+ if value is self .UNSET_DEFAULT :
363+ return self .DEFAULTS [item ]
364+ return value
365+
340366
341367class S3Transfer :
342368 ALLOWED_DOWNLOAD_ARGS = TransferManager .ALLOWED_DOWNLOAD_ARGS
0 commit comments