/usr/lib/rads/venv/lib/python3.13/site-packages/boto3/s3/__pycache__
Edit: /usr/lib/rads/venv/lib/python3.13/site-packages/boto3/s3/__pycache__/transfer.cpython-313.pyc (16160B)
jy> ^ S r SSKrSSKrSSKJrJrJr SSKJr SSK J
r
SSKJr
SSKJr SSKJr SS KJr SS
KJr SSKJr SSKJs Jr SSKJrJr \( a
SSKrSS
KJ r Sr!\!\!- r"\RF " \$5 r%SS jr&S r'S r(S r) " S S\5 r " S S5 r* " S S\5 r+g)az Abstractions over S3's upload/download operations.
This module provides high level abstractions for efficient
uploads/downloads. It handles several things for the user:
* Automatically switching to multipart transfers when
a file is over a specific size threshold
* Uploading/downloading a file in parallel
* Progress callbacks to monitor transfers
* Retries. While botocore handles retries for streaming uploads,
it is not possible for it to handle retries for streaming
downloads. This module handles retries for both cases so
you don't need to implement any retry logic yourself.
This module has a reasonable set of defaults. It also allows you
to configure many aspects of the transfer process including:
* Multipart threshold size
* Max parallel downloads
* Socket timeouts
* Retry amounts
There is no support for s3->s3 multipart copies at this
time.
.. _ref_s3transfer_usage:
Usage
=====
The simplest way to use this module is:
.. code-block:: python
client = boto3.client('s3', 'us-west-2')
transfer = S3Transfer(client)
# Upload /tmp/myfile to s3://bucket/key
transfer.upload_file('/tmp/myfile', 'bucket', 'key')
# Download s3://bucket/key to /tmp/myfile
transfer.download_file('bucket', 'key', '/tmp/myfile')
The ``upload_file`` and ``download_file`` methods also accept
``**kwargs``, which will be forwarded through to the corresponding
client operation. Here are a few examples using ``upload_file``::
# Making the object public
transfer.upload_file('/tmp/myfile', 'bucket', 'key',
extra_args={'ACL': 'public-read'})
# Setting metadata
transfer.upload_file('/tmp/myfile', 'bucket', 'key',
extra_args={'Metadata': {'a': 'b', 'c': 'd'}})
# Setting content type
transfer.upload_file('/tmp/myfile.json', 'bucket', 'key',
extra_args={'ContentType': "application/json"})
The ``S3Transfer`` class also supports progress callbacks so you can
provide transfer progress to users. Both the ``upload_file`` and
``download_file`` methods take an optional ``callback`` parameter.
Here's an example of how to print a simple progress percentage
to the user:
.. code-block:: python
class ProgressPercentage(object):
def __init__(self, filename):
self._filename = filename
self._size = float(os.path.getsize(filename))
self._seen_so_far = 0
self._lock = threading.Lock()
def __call__(self, bytes_amount):
# To simplify we'll assume this is hooked up
# to a single filename.
with self._lock:
self._seen_so_far += bytes_amount
percentage = (self._seen_so_far / self._size) * 100
sys.stdout.write(
"
%s %s / %s (%.2f%%)" % (
self._filename, self._seen_so_far, self._size,
percentage))
sys.stdout.flush()
transfer = S3Transfer(boto3.client('s3', 'us-west-2'))
# Upload /tmp/myfile to s3://bucket/key and print upload progress.
transfer.upload_file('/tmp/myfile', 'bucket', 'key',
callback=ProgressPercentage('/tmp/myfile'))
You can also provide a TransferConfig object to the S3Transfer
object that gives you more fine grained control over the
transfer. For example:
.. code-block:: python
client = boto3.client('s3', 'us-west-2')
config = TransferConfig(
multipart_threshold=8 * 1024 * 1024,
max_concurrency=10,
num_download_attempts=10,
)
transfer = S3Transfer(client, config)
transfer.upload_file('/tmp/foo', 'bucket', 'key')
N)PathLikefspathgetpid)HAS_CRT)ClientError)RetriesExceededError)NonThreadedExecutor)TransferConfig)TransferManager)BaseSubscriber)OSUtils)r S3UploadFailedError)create_crt_transfer_manageri c 2 [ U5 ( aF [ X5 nUb8 [ R S[ 5 S[
R " 5 35 U$ [ R S[ 5 S[
R " 5 35 [ XU5 $ )a Creates a transfer manager based on configuration
:type client: boto3.client
:param client: The S3 client to use
:type config: boto3.s3.transfer.TransferConfig
:param config: The transfer config to use
:type osutil: s3transfer.utils.OSUtils
:param osutil: The os utility to use
:rtype: s3transfer.manager.TransferManager
:returns: A transfer manager based on parameters provided
zUsing CRT client. pid: z
, thread: zUsing default client. pid: )_should_use_crtr loggerdebugr threading get_ident _create_default_transfer_manager)clientconfigosutilcrt_transfer_managers D/usr/lib/rads/venv/lib/python3.13/site-packages/boto3/s3/transfer.pycreate_transfer_managerr s v:6J+LL)&(:i>Q>Q>S=TU
(' LL
%fhZz):M:M:O9PQ ,FFCC c X [ ( a/ [ S5 ( a [ R R 5 nOSnU R
R
5 nU( a* U[ R :X a [ R S5 g[ R SU S[ SU S35 g) N)r FzEAttempting to use CRTTransferManager. Config settings may be ignored.Tz6Opting out of CRT Transfer Manager. Preferred client: z, CRT available: z, Instance Optimized: .)r has_minimum_crt_versionawscrts3is_optimized_for_systempreferred_transfer_clientlower constantsAUTO_RESOLVE_TRANSFER_CLIENTr r )r is_optimized_instancepref_transfer_clients r r r s w*;77 & A A C %!;;AAC I$J$JJS
LL@
1' ;45Q 8
r c [ ( d g[ R n [ [ UR S5 5 n[
U5 nX0: $ ! [ [ 4 a gf = f)z#Not intended for use outside boto3.Fr! ) r r# __version__mapintsplittuple TypeError
ValueError)minimum_versioncrt_version_strcrt_version_intscrt_version_tuples r r" r" sb 7((OsO$9$9#$>?!"23 //
z" s *A AAc L SnUR ( d [ n[ XX#5 $ )zACreate the default TransferManager implementation for s3transfer.N)use_threadsr r )r r r executor_clss r r r s" L*66@@r c z ^ \ rS rSrSSS.rS\- SS\- SSS \- S
S\R 4 U 4S jjr U 4S
jr
SrU =r$ )r
max_request_concurrencymax_io_queue_size)max_concurrencymax_io_queue
d TNc
> [ TU ] UUUUUUUS9 U R H% n
[ X
[ X R U
5 5 M' Xpl Xl g)a Configuration object for managed S3 transfers
:param multipart_threshold: The transfer size threshold for which
multipart uploads, downloads, and copies will automatically be
triggered.
:param max_concurrency: The maximum number of threads that will be
making requests to perform a transfer. If ``use_threads`` is
set to ``False``, the value provided is ignored as the transfer
will only ever use the current thread.
:param multipart_chunksize: The partition size of each part for a
multipart transfer.
:param num_download_attempts: The number of download attempts that
will be retried upon errors with downloading an object in S3.
Note that these retries account for errors that occur when
streaming down the data from s3 (i.e. socket errors and read
timeouts that occur after receiving an OK response from s3).
Other retryable exceptions such as throttling errors and 5xx
errors are already retried by botocore (this default is 5). This
does not take into account the number of exceptions retried by
botocore.
:param max_io_queue: The maximum amount of read parts that can be
queued in memory to be written for a download. The size of each
of these read parts is at most the size of ``io_chunksize``.
:param io_chunksize: The max size of each chunk in the io queue.
Currently, this is size used when ``read`` is called on the
downloaded stream as well.
:param use_threads: If True, threads will be used when performing
S3 transfers. If False, no threads will be used in
performing transfers; all logic will be run in the current thread.
:param max_bandwidth: The maximum bandwidth that will be consumed
in uploading and downloading file content. The value is an integer
in terms of bytes per second.
:param preferred_transfer_client: String specifying preferred transfer
client for transfer operations.
Current supported settings are:
* auto (default) - Use the CRTTransferManager when calls
are made with supported environment and settings.
* classic - Only use the origin S3TransferManager with
requests. Disables possible CRT upgrade on requests.
)multipart_thresholdr= multipart_chunksizenum_download_attemptsr> io_chunksize
max_bandwidthN)super__init__ALIASsetattrgetattrr9 r&