File: //usr/lib/python3/dist-packages/s3transfer/__pycache__/subscribers.cpython-310.pyc
o
�y�`, � @ s8 d dl mZ d dlmZ d dlmZ G dd� de�ZdS )� )�six)�accepts_kwargs)�InvalidSubscriberMethodErrorc sL e Zd ZdZg d�Z� fdd�Zedd� �Zdd� Zd d
� Z dd� Z
� ZS )
�BaseSubscriberz�The base subscriber class
It is recommended that all subscriber implementations subclass and then
override the subscription methods (i.e. on_{subsribe_type}() methods).
)�queued�progress�donec s | � � tt| ��| �S )N)�_validate_subscriber_methods�superr �__new__)�cls�args�kwargs�� __class__� �8/usr/lib/python3/dist-packages/s3transfer/subscribers.pyr s zBaseSubscriber.__new__c C sH | j D ]}t| d| �}t�|�std| ��t|�s!td| ��qd S )N�on_z&Subscriber method %s must be callable.z=Subscriber method %s must accept keyword arguments (**kwargs))�VALID_SUBSCRIBER_TYPES�getattrr �callabler r )r �subscriber_type�subscriber_methodr r r r # s
������z+BaseSubscriber._validate_subscriber_methodsc K � dS )a� Callback to be invoked when transfer request gets queued
This callback can be useful for:
* Keeping track of how many transfers have been requested
* Providing the expected transfer size through
future.meta.provide_transfer_size() so a HeadObject would not
need to be made for copies and downloads.
:type future: s3transfer.futures.TransferFuture
:param future: The TransferFuture representing the requested transfer.
Nr ��self�futurer r r r � on_queued1 �
zBaseSubscriber.on_queuedc K r )aj Callback to be invoked when progress is made on transfer
This callback can be useful for:
* Recording and displaying progress
:type future: s3transfer.futures.TransferFuture
:param future: The TransferFuture representing the requested transfer.
:type bytes_transferred: int
:param bytes_transferred: The number of bytes transferred for that
invocation of the callback. Note that a negative amount can be
provided, which usually indicates that an in-progress request
needed to be retried and thus progress was rewound.
Nr )r r �bytes_transferredr r r r �on_progress@ s zBaseSubscriber.on_progressc K r )a� Callback to be invoked once a transfer is done
This callback can be useful for:
* Recording and displaying whether the transfer succeeded or
failed using future.result()
* Running some task after the transfer completed like changing
the last modified time of a downloaded file.
:type future: s3transfer.futures.TransferFuture
:param future: The TransferFuture representing the requested transfer.
Nr r r r r �on_doneR r zBaseSubscriber.on_done)�__name__�
__module__�__qualname__�__doc__r r �classmethodr r r r! �
__classcell__r r r r r s
r N)�botocore.compatr �s3transfer.compatr �s3transfer.exceptionsr �objectr r r r r �<module> s