ruạṛ
a ���f�H � @ sj d dl mZ d dlZd dlmZ ddlmZmZ ddlm Z m Z ddlmZ dd l mZ G d d� d�ZdS )� )�print_functionN)�requests� )�MultipartObjectAssembler�DEFAULT_PARALLEL_PROCESS_COUNT)�DEFAULT_PART_SIZE�STREAMING_DEFAULT_PART_SIZE)�FileReadCallbackStream� )�MultipartUploadErrorc @ sT e Zd ZdZdd� Zdd� Zdd� Zdd � Zd d� Ze dd � �Z e efdd��ZdS )� UploadManager� c K s` || _ d|v r|d nd| _d|v r,|d nd| _d|v rB|d nd| _t�| j | j| j� dS )aj UploadManager simplifies interaction with the Object Storage service by abstracting away the method used to upload objects. Depending on the configuration parameters, UploadManager may choose to do a single put_object request, or break up the upload into multiple parts and utilize multi-part uploads. An advantage of using multi-part uploads is the ability to retry individual failed parts, as well as being able to upload parts in parallel to reduce upload time. PLEASE NOTE that for oci versions < 2.23.2 and >= 2.18.0, timeout for the object storage client is overwritten to `None` for all operations which call object storage. For this reason, the operations are NOT thread-safe, and you should provide the UploadManager class with its own Object Storage client that isn't used elsewhere. For more information please see `Known Issues <https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/known-issues.html>`_ :param ObjectStorageClient object_storage_client: A configured object storage client to use for interacting with the Object Storage service. :param bool allow_multipart_uploads (optional): Whether or not this UploadManager supports performing mulitpart uploads. Defaults to True. :param bool allow_parallel_uploads (optional): Whether or not this UploadManager supports uploading individual parts of a multipart upload in parallel. This setting has no effect on uploads that are performed using a single put_object call. Defaults to True. :param int parallel_process_count (optional): The number of worker processes to use in parallel for uploading individual parts of a multipart upload. This setting is only used if allow_parallel_uploads is set to True. Defaults to 3. �allow_multipart_uploadsT�allow_parallel_uploads�parallel_process_countN)�object_storage_clientr r r r �_add_adapter_to_service_client)�selfr �kwargs� r �N/usr/lib/python3.9/site-packages/oci/object_storage/transfer/upload_manager.py�__init__ s zUploadManager.__init__c K s2 d|vrt |d<