File: //lib/python3.6/site-packages/s3transfer/__pycache__/subscribers.cpython-36.opt-1.pyc
3
\��_, � @ s8 d dl mZ d dlmZ d dlmZ G dd� de�ZdS )� )�six)�accepts_kwargs)�InvalidSubscriberMethodErrorc sN e Zd ZdZdddgZ� fdd�Zedd� �Zd d
� Zdd� Z d
d� 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).
ZqueuedZprogress�donec s | j � tt| �j| �S )N)�_validate_subscriber_methods�superr �__new__)�cls�args�kwargs)� __class__� �!/usr/lib/python3.6/subscribers.pyr s zBaseSubscriber.__new__c C sL xF| j D ]<}t| d| �}tj|�s0td| ��t|�std| ��qW d S )NZon_z&Subscriber method %s must be callable.z=Subscriber method %s must accept keyword arguments (**kwargs))�VALID_SUBSCRIBER_TYPES�getattrr �callabler r )r
Zsubscriber_typeZsubscriber_methodr r r r # s
z+BaseSubscriber._validate_subscriber_methodsc K s 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 s
zBaseSubscriber.on_queuedc K s dS )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 Zbytes_transferredr r r r �on_progress@ s zBaseSubscriber.on_progressc K s dS )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 r r �on_doneR s
zBaseSubscriber.on_done)�__name__�
__module__�__qualname__�__doc__r r �classmethodr r r r �
__classcell__r r )r
r r s r N)Zbotocore.compatr Zs3transfer.compatr Zs3transfer.exceptionsr �objectr r r r r �<module>
s